mybatis 結合 logback 在控制檯輸出 sql 語句 (自用)
阿新 • • 發佈:2019-02-10
由於工作需要,自己希望在控制檯打印出 sql 執行語句(公司 log 日誌沒有)。參考了很多文章。都沒有得到解決的辦法。也浪費了很多的時間。最終經過自己的不懈努力終於找到了解決的辦法。
感謝博主分享
而我用到的只有一行 <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 配置檔案解釋
感謝博主 我只是收集起來,謝謝!