mysql通用日志不打印_解决logback不打印mybatis的SQL日志的问题

工作这么多年,今天还是因为Logback的这个问题稍微卡了一下,惭愧。

问题描述:

logback配置了如下信息:

...此处省略File Appender内容

${logbase}sql.%d{yyyy-MM-dd}.log

30

[%d{yyyy-MM-dd HH:mm:ss} [%t] [%X{traceId}] %5p %c:%L] %m%n

可以看到sql这个appender配置, 这里文件是 sql-时间戳.log

${logbase}sql.%d{yyyy-MM-dd}.log

但是日志不在 sql-时间戳.log中,而在 file中(file appender的配置文中没有给出, 省略)。

后面看file的日志发现(如果你没有file,那么配置console, 然后就看 console ),我这种情况是 Mybatis Mapper的日志都是以dao开头

那么好,修改 logger name ="dao",问题解决。

为什么我这里是Mybatis Mapper的日志都是以dao开头?

查看mybatis-config.xml配置文件后,发现:

/p>

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

logPrefix="dao.", 这句导致dao的日志,不是以他原来的包名,而是以dao.开头. 因此 logger name=""不写dao开头的name, 就无法匹配, 导致无法打印到对应的appender所创建的文件内.

MyBatis 中,可以通过以下两种方式来显示 SQL 语句: 1. 在 MyBatis 配置文件中开启日志MyBatis 的配置文件中,可以配置日志的级别和输出方式。如果将日志级别配置为 DEBUG 或 TRACE,则可以看到 MyBatis 执行的 SQL 语句。例如: ```xml <configuration> <settings> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings> <typeAliases> ... </typeAliases> <mappers> ... </mappers> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <mappers> ... </mappers> <loggers> <logger name="org.mybatis.example.BlogMapper" level="TRACE" /> <logger name="org.mybatis.example.*" level="TRACE" /> </loggers> </configuration> ``` 在上述配置文件中,将日志输出方式设置为 STDOUT_LOGGING,将日志级别设置为 TRACE。然后在需要输出 SQL 语句的 Mapper 接口中,添加 @Mapper 注解,例如: ```java @Mapper public interface BlogMapper { @Select("SELECT * FROM blog WHERE id = #{id}") Blog selectBlog(int id); } ``` 在应用程序运行时,MyBatis 将输出 SQL 语句到控制台中。 2. 使用 Log4j 或 Logback 日志框架 如果使用 Log4j 或 Logback 日志框架,可以在配置文件中添加 MyBatis日志输出配置。例如,使用 Log4j2 的配置如下: ```xml <Configuration> <Appenders> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="STDOUT"/> </Root> <Logger name="org.mybatis.example.BlogMapper" level="DEBUG" additivity="false"> <AppenderRef ref="STDOUT"/> </Logger> <Logger name="org.mybatis.example.*" level="DEBUG" additivity="false"> <AppenderRef ref="STDOUT"/> </Logger> </Loggers> </Configuration> ``` 在上述配置文件中,将日志输出方式设置为控制台,将日志级别设置为 DEBUG。然后在需要输出 SQL 语句的 Mapper 接口中,添加 @Mapper 注解。在应用程序运行时,MyBatis 将输出 SQL 语句到控制台中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值