mybatis-plus中sql日志存放到指定文件


前言

提示:文章的前提是使用的日志框架是logback


logback-spring.xml配置文件如下

(如果是logbackx.xml 动态路径会失效)


<configuration>

	
	<property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss} %c{1} %L [%p] %m%n %caller{0}"/>

	
	<springProperty scope="context" name="log.path" source="log.path"/>

	
	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
		<encoder charset="UTF-8">
			
			<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{50} >>> %msg%npattern>
		encoder>
	appender>


	<appender name="common" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.path}/common.logfile>
		
		<append>trueappend>
		
		<encoder>
			<pattern>${pattern}pattern>
		encoder>
		
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFOlevel>
			<onMatch>ACCEPTonMatch>
			<onMismatch>DENYonMismatch>
		filter>
		
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${log.path}/common.log.%d{yyyy-MM-dd}fileNamePattern>
			
			<maxHistory>10maxHistory>
		rollingPolicy>
	appender>

	<appender name="exception" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.path}/exception.logfile>
		<append>trueappend>
		
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERRORlevel>
			<onMatch>ACCEPTonMatch>
			<onMismatch>DENYonMismatch>
		filter>
		<encoder>
			<pattern>${pattern}pattern>
		encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${log.path}/exception.log.%d{yyyy-MM-dd}fileNamePattern>
			<maxHistory>7maxHistory>
		rollingPolicy>
	appender>


	<appender name="mysql_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.path}/mysql_log.logfile>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			
			<FileNamePattern>${log.path}/mysql_log.log.%d{yyyy-MM-dd}FileNamePattern>
			
			<MaxHistory>7MaxHistory>
		rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>${pattern}pattern>
		encoder>
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>DEBUGlevel>
		filter>
	appender>



	
	<logger name="com.xxx.mapper" level="DEBUG" additivity="false">
		<appender-ref ref="stdout"/>
		<appender-ref ref="mysql_log" />
	logger>


	


	
	<root level="INFO">
		<appender-ref ref="stdout"/>
		<appender-ref ref="common"/>
		<appender-ref ref="exception"/>
	root>
configuration>


几个关键点

  1. 文件名需要为logback-spring.xml; 动态日志路径才会生效; 属性文件中配置 log.path=xxx;
  2. levle 需要是DEBUG等级; 因为sql日志是DEBUG等级的;name= 存放mapper文件的包路径
    <logger name="com.xxx.mapper" level="DEBUG" additivity="false">
		<appender-ref ref="stdout"/>
		<appender-ref ref="mysql_log" />
	logger>
  1. mybatis的log-impl需要配置正确的实现类 比如 在maybatis-plus中
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
mybatis-plus:
	configuration:
	    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
	    # 这个配置会将执行的sql打印出来,这个可以存放在文件中 StdOutImpl的是只能打印到控制台
	    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl

  1. StdOutImpl 导致文件只能出现在控制台;却没有打印到文件中
  2. 参数值的默认值设置
    如果配置文件没有设置属性. 可以在使用的地方设置默认值 例如 ${log.path:-默认值}

你可能感兴趣的:(帮助性文章,java)