由于工作需要,自己希望在控制台打印出 sql 执行语句(公司 log 日志没有)。参考了很多文章。都没有得到解决的办法。也浪费了很多的时间。最终经过自己的不懈努力终于找到了解决的办法。
感谢博主分享
这里是 logback 的官网 https://logback.qos.ch/manual/configuration.html
而我用到的只有一行 <logger name="dao" level="DEBUG"/> 便可以将 sql 日志打印出来
而我的logback.xml 的内容是
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd"> -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
<property name="FILE_DIR" value="${catalina.base}/logs" />
<property name="FILE_NAME" value="CCP_Backend" />
<!-- console -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 默认配置为PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- info -->
<appender name="INFOAPPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${FILE_DIR}/${FILE_NAME}.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 按天来滚动,如果需要按小时来滚动,则设置为{yyyyMMddHH},如果要启用压缩,需要将fileNamePattern的后缀名设置为压缩格式.zip或.gz,如:${FILE_DIR}/${FILE_NAME}.%d{yyyyMMddHH}.zip -->
<fileNamePattern>${FILE_DIR}/${FILE_NAME}.%d{yyyyMMdd}.%i.log</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<!-- 如果按天来回滚,则最大保存时间为30天,30天之前的都将被清理掉 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{0} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 临界过滤,过滤掉 TRACE 和 DEBUG 级别的日志 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level><!-- 只打印info及以上级别日志 -->
</filter>
</appender>
<!-- debug -->
<appender name="DEBUGAPPENDER"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${FILE_DIR}/${FILE_NAME}_debug.log</File>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 按天来滚动,如果需要按小时来滚动,则设置为{yyyyMMddHH},如果要启用压缩,需要将fileNamePattern的后缀名设置为压缩格式.zip或.gz,如:${FILE_DIR}/${FILE_NAME}.%d{yyyyMMddHH}.zip -->
<fileNamePattern>${FILE_DIR}/${FILE_NAME}_debug.%d{yyyyMMdd}.%i.log</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<!-- 如果按天来回滚,则最大保存时间为30天,30天之前的都将被清理掉 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{0} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印debug日志 -->
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 异步输出,这里可以根据具体需求再调整,或者不用异步输出 -->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 5秒,单位毫秒,默认是1秒 -->
<maxFlushTime>5000</maxFlushTime>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="DEBUGAPPENDER" />
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="INFOAPPENDER" />
</root>
<logger name="error" level="ERROR" additivity="false">
<appender-ref ref="INFOAPPENDER" />
</logger>
<logger name="warn" level="ERROR" additivity="false">
<appender-ref ref="INFOAPPENDER" />
</logger>
<logger name="info" level="WARN" additivity="false">
<appender-ref ref="INFOAPPENDER" />
</logger>
<logger name="debug-asyn" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC" />
</logger>
<logger name="debug" level="DEBUG" additivity="false">
<appender-ref ref="STDOUT" />
<appender-ref ref="DEBUGAPPENDER" />
</logger>
<!-- 所有的日志级别:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL ,建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG-->
</configuration>
官网说这个可以根据自己的 mapper.xml 包定义,但是在我项目中没有dao这个包。不知道为什么设置成 dao 就会有日志打印。有懂的朋友可以帮忙解释下。
在 此 博文 中有提 但我还没有想通
这篇 博文 是关于logger 配置文件解释
感谢博主 我只是收集起来,谢谢!