mybatis 结合 logback 在控制台输出 sql 语句 (自用)

本文讲述了如何通过Logback配置,在控制台输出Mybatis的SQL执行语句。关键在于设置logger的name为"dao",level为DEBUG。虽然官方建议根据mapper.xml包定义,但在作者的项目中,设置为"dao"生效。文中还提及了相关博文和logback配置文件的解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        由于工作需要,自己希望在控制台打印出 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 配置文件解释

感谢博主 我只是收集起来,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值