es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Los registros de Mybatis se muestran en las pruebas de JUnit pero no en Tomcat.

Estoy utilizando MyBatis, SLF4J y Logback dentro de una aplicación web Java que se despliega como un archivo .war en Tomcat.

Puedo ver los registros DEBUG y TRACE de mis mapeadores de MyBatis cuando ejecuto pruebas unitarias, pero no puedo ver ningún registro de MyBatis cuando ejecuto el mismo código en Tomcat. ¿Alguna idea?

Tengo un solo archivo logback.xml en src/main/resources. Este archivo termina dentro de WEB-INF/classes dentro del archivo .war cuando se despliega en Tomcat. He configurado Logback de la manera más simple posible (directamente de la documentación):

<configuration debug="true"> 

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- encoders are by default assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="debug">
    <appender-ref ref="STDOUT"></appender-ref>
  </root>
</configuration>

MyBatis también está configurado mediante archivos de configuración de mapeadores y XML.

Cuando ejecuto pruebas unitarias, veo mensajes de registro de MyBatis como estos:

2021-12-17 09:41:17 DEBUG org.apache.ibatis.datasource.pooled.PooledDataSource - Testing connection ...
2021-12-17 09:41:17 DEBUG mymapper.selectStatement - ==> Preparing: select count(*) from MY_TABLE

Pero nunca veo estos registros cuando se ejecuta en Tomcat.

He leído y experimentado con la configuración según se describe aquí: https://mybatis.org/mybatis-3/logging.html.

He intentado configurar esto en mi archivo de configuración de MyBatis:

<setting name="logImpl" value="SLF4J"></setting>

He verificado tres veces que las pruebas unitarias están ejecutando el mismo código exacto (y utilizando los mismos archivos de configuración) que cuando se despliega en Tomcat. Los registros de MyBatis aparecen correctamente en la salida estándar de las pruebas unitarias, pero no hay registros de MyBatis en Tomcat.

Todos los mensajes de registro de otras bibliotecas parecen mostrarse correctamente tanto en las pruebas unitarias como en el entorno de Tomcat, pero por alguna razón MyBatis no muestra los registros en Tomcat.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo problemas para ver los registros de Mybatis cuando ejecutas tu aplicación web Java en Tomcat, incluso aunque puedas verlos cuando ejecutas pruebas JUnit.

    En primer lugar, verifica que el archivo de configuración logback.xml esté incluido correctamente en tu archivo war y que se encuentre en el directorio correcto (WEB-INF/classes). Asegúrate de que el nivel de registro esté configurado en debug o trace para asegurar que se muestren todos los registros.

    Luego, asegúrate de que el archivo de configuración de Mybatis también esté incluido en el archivo war y que se encuentre en el directorio correcto. En el archivo de configuración de Mybatis, prueba configurando logImpl como “SLF4J” para asegurarte de que Mybatis esté utilizando el marco de registro correcto.

    También puedes intentar agregar configuraciones de registro más específicas para Mybatis, como agregar registradores relacionados con Mybatis al archivo de configuración logback.xml. Esto puede ayudar a proporcionar información más específica para fines de depuración.

    Si todo lo demás falla, es posible que debas verificar si hay posibles conflictos o dependencias con otras configuraciones o marcos de registro que puedan interferir con los registros de Mybatis.

    En general, es esencial asegurarse de que todas las configuraciones y archivos necesarios estén incluidos y ubicados en los directorios correctos para permitir un registro adecuado en tu aplicación web.

Comments are closed.