1. 程式人生 > >mybatis 結合 logback 在控制檯輸出 sql 語句 (自用)

mybatis 結合 logback 在控制檯輸出 sql 語句 (自用)

        由於工作需要,自己希望在控制檯打印出 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 配置檔案解釋

感謝博主 我只是收集起來,謝謝!