spring+springMVC+Mybatis下的logback日志
2017-09-05 23:03
351 查看
原文地址:spring+springMVC+Mybatis下的logback日志
业务需求变了,需要用logback框架,替换掉log4j。给出理由是logback比log4j快。怎么快,我这里就不
说了。因为xml做logback日志配置文件的比较多,我这里就用xml
前提,假设你们了解过一点logback,因为我省略了好多注释。比如:为什么没看见spring加载logback
就像http://995998760.iteye.com/blog/2283753这篇文章的第四步,log4j需要spring去加载,因为logback不需要。
1、tomcat容器和logback的结合
在web.xml上加入
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>classpath:logback.xml</param-value>
</context-param>
<listener>
<listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
</listener>
2、logback配置文件(能打印sql日志)
因为mybatis原则上是不支持logback,但是logback是SLF4J的完美实现者(有点像java的接口和实现类感觉)
所以需要在mybatis-config.xml里加上
<setting name="logImpl" value="SLF4J"/>
因为,logback监控java.sql不是很好
就像这句话<logger name="java.sql.Connection" level="DEBUG"/>没有任何作用,不会打印sql语句
所以在mybatis-config.xml里再加上
<setting name="logPrefix" value="dao."/>
这句话的意思是,在所有的SQL映射路径上加上“dao”这个前缀,有点像SQL语句配置文件(***.xml)在“dao”这个虚拟的目录下,具体作用后面讲
logback.xml文件,或者logback-test.xml文件,可以不写(区别log4j日志框架),因为框架检测到没有改配置文件的时候,就会取代码默认条件执行(我试过了,级别是debug,单个文件记录)。我需要多个文件记录日志,所以不采取默认方式,自己配,如下
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.home}/logs/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.home}/logs/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>20MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.home}/logs/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.home}/logs/debug.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>60MB</maxFileSize>
</rollingPolicy>
<!-- 这个得注释掉,因为加上了会重复打印,原因看下面就知道了 -->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter> -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.home}/logs/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.home}/logs/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>20MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<!-- 把代码里的日志级别调为debug级别 -->
<logger name="com.ihandy.chelenet" level="DEBUG" >
<appender-ref ref="info"></appender-ref>
<!-- 你们可以试一下 反注释下面的代码会有什么效果吐舌头 -->
<!-- <appender-ref ref="debug"></appender-ref> -->
<appender-ref ref="error"></appender-ref>
</logger>
<!-- 就是这个监控了mybatis日志输出,配合上面的“dao” -->
<logger name="dao" level="DEBUG"/>
<!-- 以下这些也没用
<logger name="com.apache.ibatis" level="DEBUG"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
-->
<!-- 以下这些我试过,没用
<logger name="org.mybatis" level="DEBUG" additivity="false">
<appender-ref ref="debug"/>
</logger>
<logger name="org.apache.ibatis" level="DEBUG" additivity="false">
<appender-ref ref="debug"/>
</logger>
<logger name="java.sql" level="DEBUG" additivity="false">
<appender-ref ref="debug"/>
</logger>
-->
<!-- 这个是日志总控制开关,这里面我把“debug“加上去 ,所以上面那个注释的就不要-->
<root level="DEBUG">
<appender-ref ref="debug"></appender-ref>
<appender-ref ref="STDOUT" />
</root>
</configuration>
3、以上就基本完成了
不要忘了jia包
logback-classic-1.1.2.jar
logback-core-1.1.2.jar
logback-ext-spring-0.1.1.jar
还有这个jra包,我没试过,不知道需不需要
slf4j-api-1.7.7.jar
业务需求变了,需要用logback框架,替换掉log4j。给出理由是logback比log4j快。怎么快,我这里就不
说了。因为xml做logback日志配置文件的比较多,我这里就用xml
前提,假设你们了解过一点logback,因为我省略了好多注释。比如:为什么没看见spring加载logback
就像http://995998760.iteye.com/blog/2283753这篇文章的第四步,log4j需要spring去加载,因为logback不需要。
1、tomcat容器和logback的结合
在web.xml上加入
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>classpath:logback.xml</param-value>
</context-param>
<listener>
<listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
</listener>
2、logback配置文件(能打印sql日志)
因为mybatis原则上是不支持logback,但是logback是SLF4J的完美实现者(有点像java的接口和实现类感觉)
所以需要在mybatis-config.xml里加上
<setting name="logImpl" value="SLF4J"/>
因为,logback监控java.sql不是很好
就像这句话<logger name="java.sql.Connection" level="DEBUG"/>没有任何作用,不会打印sql语句
所以在mybatis-config.xml里再加上
<setting name="logPrefix" value="dao."/>
这句话的意思是,在所有的SQL映射路径上加上“dao”这个前缀,有点像SQL语句配置文件(***.xml)在“dao”这个虚拟的目录下,具体作用后面讲
logback.xml文件,或者logback-test.xml文件,可以不写(区别log4j日志框架),因为框架检测到没有改配置文件的时候,就会取代码默认条件执行(我试过了,级别是debug,单个文件记录)。我需要多个文件记录日志,所以不采取默认方式,自己配,如下
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8">
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.home}/logs/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.home}/logs/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>20MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.home}/logs/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.home}/logs/debug.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>60MB</maxFileSize>
</rollingPolicy>
<!-- 这个得注释掉,因为加上了会重复打印,原因看下面就知道了 -->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter> -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.home}/logs/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.home}/logs/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<maxFileSize>20MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<!-- 把代码里的日志级别调为debug级别 -->
<logger name="com.ihandy.chelenet" level="DEBUG" >
<appender-ref ref="info"></appender-ref>
<!-- 你们可以试一下 反注释下面的代码会有什么效果吐舌头 -->
<!-- <appender-ref ref="debug"></appender-ref> -->
<appender-ref ref="error"></appender-ref>
</logger>
<!-- 就是这个监控了mybatis日志输出,配合上面的“dao” -->
<logger name="dao" level="DEBUG"/>
<!-- 以下这些也没用
<logger name="com.apache.ibatis" level="DEBUG"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
-->
<!-- 以下这些我试过,没用
<logger name="org.mybatis" level="DEBUG" additivity="false">
<appender-ref ref="debug"/>
</logger>
<logger name="org.apache.ibatis" level="DEBUG" additivity="false">
<appender-ref ref="debug"/>
</logger>
<logger name="java.sql" level="DEBUG" additivity="false">
<appender-ref ref="debug"/>
</logger>
-->
<!-- 这个是日志总控制开关,这里面我把“debug“加上去 ,所以上面那个注释的就不要-->
<root level="DEBUG">
<appender-ref ref="debug"></appender-ref>
<appender-ref ref="STDOUT" />
</root>
</configuration>
3、以上就基本完成了
不要忘了jia包
logback-classic-1.1.2.jar
logback-core-1.1.2.jar
logback-ext-spring-0.1.1.jar
还有这个jra包,我没试过,不知道需不需要
slf4j-api-1.7.7.jar
相关文章推荐
- Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录
- Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录
- Mybatis+SpringMVC打印纯SQL日志
- 【Log4J 系列】:log4j 整合SpringMVC+MyBatis 实现日志记录(01)
- springMVC +Mybatis +spring aop 实现用户系统操作日志记录
- springMvc+MyBatis+Maven配置和log4j相似的Logback
- bootstrap + angularjs + springmvc + mybatis框架之加载log4j日志
- Logback+ELK+SpringMVC搭建日志收集服务器
- springmvc+mybatis整合下的日志配置
- spring+springmvc+mybatis+logback非maven
- springmvc+spring+mybatis(简单登录)+aop日志管理
- SpringMVC+MyBatis+logback
- spring+springmvc+mybatis+logback 框架搭建
- Java日志框架-Spring中使用Logback(Spring/Spring MVC)
- Logback+ELK+SpringMVC搭建日志收集服务器
- Spring+SpringMVC+Mybatis 利用AOP自定义注解实现可配置日志快照记录
- SSM框架使用Maven构建环境详细整合教程(Spring+SpringMVC+MyBatis)
- Html+Ajax+Springmvc+Mybatis,不用JSP【转】
- Eclipse中 搭建 Spring+SpringMVC+Mybatis整合(下)
- SSM(Spring+SpringMVC+MyBatis)框架详细整合和多数据源配置