ssm框架使用slf4j+logback进行日志记录

这几天使用使用ssm搭建项目框架时,开始使用log4j作为日志框架,但是springmvc已经不支持使用org.springframework.web.util.Log4jConfigListeners这个监听器,上网搜索了一番,果断采用了slf4j+logback进行日志记录,首先对他们做一个对比,slf4j是java的一个日志门面,实现了日志框架一些通用的api,log4j和logback是具体的日志框架。
他们可以单独的使用,也可以绑定slf4j一起使用。
单独使用。分别调用框架自己的方法来输出日志信息。
绑定slf4j一起使用。调用slf4j的api来输入日志信息,具体使用与底层日志框架无关(需要底层框架的配置文件),具体关系如图

ssm框架使用slf4j+logback进行日志记录_第1张图片

使用slf4j绑定日志系统的优势
软件工程的角度。抽象,解耦,便于维护
语法设计角度。slf4j有{}占位符,而log4j需要用“+”来连接字符串,既不利于阅读,同时消耗了内存(heap memory)。

  • log4j与logback
    logback的优势:
  • 更快的执行速度
  • 充分的测试
  • logback-classic 非常自然的实现了SLF4J
  • 丰富的扩展文档
  • 可以使用使用XML配置文件或者Groovy
  • 自动重新载入配置文件
  • 优雅地从I/O错误中恢复
  • 自动清除旧的日志归档文件
  • 自动压缩归档日志文件

好了下面进行详细的配置

开发环境:

  • jdk1.8
  • maven3
  • idea2017
  • spring 4.3.9

导入ssm所需jar包,此处不再进行叙述,
日志管理所需jar包

      ch.qos.logback
      logback-classic
      1.1.11
    
    
      org.logback-extensions
      logback-ext-spring
      0.1.1
    
    
      org.slf4j
      jcl-over-slf4j
      1.7.25
    
  • 第一个logback-classic包含了logback本身所需的slf4j-api.jar、logback-core.jar及logback-classsic.jar
  • 第二个logback-ext-spring是由官方提供的对Spring的支持,它的作用就相当于log4j中的Log4jConfigListener;这个listener,网上大多都是用的自己实现的,原因在于这个插件似乎并没有出现在官方文档的显要位置导致大多数人并不知道它的存在
  • 第三个jcl-over-slf4j是用来把Spring源代码中大量使用到的commons-logging替换成slf4j,只有在添加了这个依赖之后才能看到Spring框架本身打印的日志,否则只能看到开发者自己打印的日志

配置logback.xml

使用maven,放置在resources目录下



    
     
     
     
      
     

    
    
        
            %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method\(\):%L -%msg%n
        
    

    
    
        ${log.base}/${log.moduleName}.log
        
        
            ${log.base}/archive/${log.moduleName}_all_%d{yyyy-MM-dd}.%i.log.zip
            
            
            
                ${log.max.size}
            
        
        
        
            %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method\(\):%L -%msg%n
        
    
    
    
    
        ${log.base}/${log.moduleName}_other.log
        
            ${log.base}/archive/${log.moduleName}_other_%d{yyyy-MM-dd}.%i.log.zip
            
            
                ${log.max.size}
            
        
        
            %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method\(\):%L -%msg%n
        
    

    
    
        ${log.base}/${log.moduleName}_err.log
        
            ${log.base}/archive/${log.moduleName}_err_%d{yyyy-MM-dd}.%i.log.zip
            
            
                ${log.max.size}
            
        
        
            %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method\(\):%L - %msg%n
        
        
        
            ERROR
            ACCEPT
            DENY
        
    

   
    
    
    
        0
        256
        true
        
    

    
        0
        256
        true
        
    

    
    
        
         
        
        
    
    
        
    

    
        
    
    
    
         
        
        
    

注意mybatis日志管理
logback.xml 中配置


        
    

mybatis.xml中配置

    
    
    
    

最后配置web.xml



  
    logbackConfigLocation
    classpath:log/logback.xml
  
  
    ch.qos.logback.ext.spring.web.LogbackConfigListener
  

到这里,我们的配置已经完成了,可以使用了。

 private static final Logger logger = LoggerFactory.getLogger(监听的类.class);

然后可以打印各个级别的日志信息了。

你可能感兴趣的:(ssm框架使用slf4j+logback进行日志记录)