spring+springMVC+Mybatis下的logback日志

本文介绍如何在Spring+SpringMVC+Mybatis项目中使用Logback进行日志配置,包括Tomcat容器集成、多文件滚动策略及SQL日志输出。

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

原文地址:spring+springMVC+Mybatis下的logback日志


业务需求变了,需要用logback框架,替换掉log4j。给出理由是logback比log4j快。怎么快,我这里就不

说了。因为xml做logback日志配置文件的比较多,我这里就用xml

前提,假设你们了解过一点logback,因为我省略了好多注释。比如:为什么没看见spring加载logback

就像http://995998760.iteye.com/blog/2283753这篇文章的第四步,log4j需要spring去加载,因为logback不需要。

 

1tomcat容器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>

 

2logback配置文件(能打印sql日志)

因为mybatis原则上是不支持logback,但是logbackSLF4J的完美实现者(有点像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代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <configuration>  
  4.   
  5.     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
  6.   
  7.         <encoder  charset="UTF-8">  
  8.   
  9.             <pattern>  
  10.   
  11.                 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n  
  12.   
  13.             </pattern>  
  14.   
  15.         </encoder>  
  16.   
  17.     </appender>  
  18.   
  19.    
  20.   
  21.     <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  22.   
  23.         <file>${catalina.home}/logs/info.log</file>  
  24.   
  25.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  26.   
  27.             <fileNamePattern>${catalina.home}/logs/info.%d{yyyy-MM-dd}.log</fileNamePattern>  
  28.   
  29.             <maxHistory>30</maxHistory>  
  30.   
  31.             <maxFileSize>20MB</maxFileSize>  
  32.   
  33.         </rollingPolicy>  
  34.   
  35.         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  36.   
  37.             <level>INFO</level>  
  38.   
  39.             <onMatch>ACCEPT</onMatch>  
  40.   
  41.             <onMismatch>DENY</onMismatch>  
  42.   
  43.         </filter>  
  44.   
  45.         <encoder>  
  46.   
  47.             <pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>  
  48.   
  49.         </encoder>  
  50.   
  51.     </appender>  
  52.   
  53.    
  54.   
  55.     <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  56.   
  57.         <file>${catalina.home}/logs/debug.log</file>  
  58.   
  59.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  60.   
  61.             <fileNamePattern>${catalina.home}/logs/debug.%d{yyyy-MM-dd}.log</fileNamePattern>  
  62.   
  63.             <maxHistory>30</maxHistory>  
  64.   
  65.             <maxFileSize>60MB</maxFileSize>  
  66.   
  67.         </rollingPolicy>  
  68.   
  69.         <!--  这个得注释掉,因为加上了会重复打印,原因看下面就知道了  -->  
  70.   
  71.         <!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  72.   
  73.             <level>DEBUG</level>  
  74.   
  75.             <onMatch>ACCEPT</onMatch>  
  76.   
  77.             <onMismatch>DENY</onMismatch>  
  78.   
  79.         </filter> -->  
  80.   
  81.         <encoder>  
  82.   
  83.             <pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>  
  84.   
  85.         </encoder>  
  86.   
  87.     </appender>  
  88.   
  89.    
  90.   
  91.     <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  92.   
  93.         <file>${catalina.home}/logs/error.log</file>  
  94.   
  95.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  96.   
  97.             <fileNamePattern>${catalina.home}/logs/error.%d{yyyy-MM-dd}.log</fileNamePattern>  
  98.   
  99.             <maxHistory>30</maxHistory>  
  100.   
  101.             <maxFileSize>20MB</maxFileSize>  
  102.   
  103.         </rollingPolicy>  
  104.   
  105.         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  106.   
  107.             <level>ERROR</level>  
  108.   
  109.             <onMatch>ACCEPT</onMatch>  
  110.   
  111.             <onMismatch>DENY</onMismatch>  
  112.   
  113.         </filter>  
  114.   
  115.         <encoder>  
  116.   
  117.             <pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>  
  118.   
  119.         </encoder>  
  120.   
  121.     </appender>  
  122.   
  123.    
  124.   
  125.     <!-- 把代码里的日志级别调为debug级别 -->  
  126.   
  127.     <logger name="com.ihandy.chelenet" level="DEBUG" >  
  128.   
  129.         <appender-ref ref="info"></appender-ref>  
  130.   
  131.         <!-- 你们可以试一下     反注释下面的代码会有什么效果吐舌头 -->  
  132.   
  133.         <!-- <appender-ref ref="debug"></appender-ref> -->  
  134.   
  135.         <appender-ref ref="error"></appender-ref>  
  136.   
  137.     </logger>  
  138.   
  139.    
  140.   
  141.     <!-- 就是这个监控了mybatis日志输出,配合上面的“dao” -->  
  142.   
  143.     <logger name="dao" level="DEBUG"/>  
  144.   
  145.    
  146.   
  147.     <!-- 以下这些也没用  
  148.   
  149.         <logger name="com.apache.ibatis" level="DEBUG"/>  
  150.   
  151.         <logger name="java.sql.Connection" level="DEBUG"/>  
  152.   
  153.         <logger name="java.sql.Statement" level="DEBUG"/>  
  154.   
  155.         <logger name="java.sql.PreparedStatement" level="DEBUG"/>  
  156.   
  157.     -->  
  158.   
  159.    
  160.   
  161.     <!-- 以下这些我试过,没用  
  162.   
  163.         <logger name="org.mybatis" level="DEBUG" additivity="false">  
  164.   
  165.                 <appender-ref ref="debug"/>  
  166.   
  167.         </logger>  
  168.   
  169.         <logger name="org.apache.ibatis" level="DEBUG" additivity="false">  
  170.   
  171.                 <appender-ref ref="debug"/>  
  172.   
  173.         </logger>          
  174.   
  175.         <logger name="java.sql" level="DEBUG" additivity="false">  
  176.   
  177.                 <appender-ref ref="debug"/>  
  178.   
  179.     </logger>    
  180.   
  181.     -->  
  182.   
  183.     <!-- 这个是日志总控制开关,这里面我把“debug“加上去 ,所以上面那个注释的就不要-->  
  184.   
  185.     <root level="DEBUG">  
  186.   
  187.         <appender-ref ref="debug"></appender-ref>  
  188.   
  189.         <appender-ref ref="STDOUT" />  
  190.   
  191.     </root>  
  192.   
  193.    
  194.   
  195. </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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值