工作这么多年,今天还是因为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所创建的文件内.