zoukankan      html  css  js  c++  java
  • 【Log日志】打印mybatis中sql日志并存放到指定文件中

    转:

    【Log日志】打印mybatis中sql日志并存放到指定文件中

    打印mybatis中sql日志并存放到指定文件中

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

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    
    	<!-- 子节点<property> :用来定义变量值,它有两个属性name和value,通过<property>定义的值会被插入到logger上下文中,可以使“${}”来使用变量-->
    	<property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss} %c{1} %L [%p] %m%n %caller{0}"/>
    
    	<!-- 获取Environment中的值; 属性文件中可以设置 log.path的值来动态变更路径-->
    	<springProperty scope="context" name="log.path" source="log.path"/>
    
    	<!-- 把日志输出到控制台-->
    	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    		<encoder charset="UTF-8">
    			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符-->
    			<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{50} >>> %msg%n</pattern>
    		</encoder>
    	</appender>
    
    
    	<appender name="common" class="ch.qos.logback.core.rolling.RollingFileAppender">
    		<file>${log.path}/common.log</file>
    		<!-- 如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。 -->
    		<append>true</append>
    		<!-- 对记录事件进行格式化 -->
    		<encoder>
    			<pattern>${pattern}</pattern>
    		</encoder>
    		<!-- 匹配>=INFO级别的日志-->
    		<filter class="ch.qos.logback.classic.filter.LevelFilter">
    			<level>INFO</level>
    			<onMatch>ACCEPT</onMatch>
    			<onMismatch>DENY</onMismatch>
    		</filter>
    		<!-- 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动-->
    		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    			<fileNamePattern>${log.path}/common.log.%d{yyyy-MM-dd}</fileNamePattern>
    			<!-- 可选节点,控制保留的归档文件的最大天数。-->
    			<maxHistory>10</maxHistory>
    		</rollingPolicy>
    	</appender>
    
    	<appender name="exception" class="ch.qos.logback.core.rolling.RollingFileAppender">
    		<file>${log.path}/exception.log</file>
    		<append>true</append>
    		<!-- 匹配>=ERROR级别的日志-->
    		<filter class="ch.qos.logback.classic.filter.LevelFilter">
    			<level>ERROR</level>
    			<onMatch>ACCEPT</onMatch>
    			<onMismatch>DENY</onMismatch>
    		</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>7</maxHistory>
    		</rollingPolicy>
    	</appender>
    
    
    	<appender name="mysql_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
    		<file>${log.path}/mysql_log.log</file>
    		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    			<!-- 日志文件输出文件名 -->
    			<FileNamePattern>${log.path}/mysql_log.log.%d{yyyy-MM-dd}</FileNamePattern>
    			<!-- 日志文件保留天数 -->
    			<MaxHistory>7</MaxHistory>
    		</rollingPolicy>
    		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    			<pattern>${pattern}</pattern>
    		</encoder>
    		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    			<level>DEBUG</level>
    		</filter>
    	</appender>
    
    
    
    	<!-- 打印mysql日志  name= 存放mapper的包名; 注意mybatis-plus.configuration.log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
    		如果log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ;则只会打印到控制台;不会存放到文件
    	-->
    	<logger name="com.xxx.mapper" level="DEBUG" additivity="false">
    		<appender-ref ref="stdout"/>
    		<appender-ref ref="mysql_log" />
    	</logger>
    
    
    	<!-- 用来设置某一个包或具体的某一个类的日志打印级别、以及指定<appender>。
    	name: 用来指定受此loger约束的某一个包或者具体的某一个类。
        level: 如果未设置此属性,那么当前loger将会继承上级的级别。上级是<root>
    	addtivity:是否向上级logger传递打印信息。默认是true
    	-->
    
    
    	<!--它是根loger,是所有<loger>的上级。只有一个level属性,因为name已经被命名为"root",且已经是最上级了。 -->
    	<root level="INFO">
    		<appender-ref ref="stdout"/>
    		<appender-ref ref="common"/>
    		<appender-ref ref="exception"/>
    	</root>
    </configuration>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101

    几个关键点

    1. 文件名需要为logback-spring.xml; 动态日志路径才会生效; 属性文件中配置 log.path=xxx;
      【Log日志】logback.xml动态配置属性值(包括接入的第三方配置)

    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
    • 2
    • 3
    • 4
    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
    • 2
    • 3
    • 4
    • 5
    • 6

    我之前就是一直配置的是 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ;导致文件只能出现在控制台;却没有打印到文件中;

      1. 参数值的默认值设置
        如果配置文件没有设置属性. 可以在使用的地方设置默认值 例如 ${log.path:-默认值}
  • 相关阅读:
    记录一下自己写PHP程序时走过的一些坑
    自己写了一个TCP攻击测压平台
    Centos 7x 安装 Telegram MTproxy代理【完美可用】
    "@阅后即焚"上线了!
    小白的机器学习坑3:粗大的安装CUDA
    小白的机器学习坑2:nvidia驱动的安装
    小白的机器学习坑1:ubuntu 18.04的安装
    小白的linux学习笔记9:安装nodejs和gitbook
    小白的linux笔记11:放弃gitbook,转战Sphinx
    小白的linux学习笔记10:安装nginx和第一个网页
  • 原文地址:https://www.cnblogs.com/libin6505/p/13938006.html
Copyright © 2011-2022 走看看