LogBack――LogBack在项目(Web或Java)中的应用(二)

2014-11-24 07:37:26 · 作者: · 浏览: 1
ppender和TriggeringPolicy的配置,但是如果它的RollingPolicy也实现了TriggeringPolicy接口,只需要指定前者即可。此点需要注意:笔者在使用时,就忽略这一点,导致日志滚动不成功。其具体属性如下:(以项目中使用到的为例 ) file:继承自FileAppender,指定日志文件名。append:继承自FileAppender,为true,日志将追加到日志文件的尾部,false将删除已经存在的日志文件,默认为true。encoder:Encoder,指定日志格式及编码 RollingPolicy TimeBaseRollingPolicy可能是最常用的滚动策略了,它是基于时间的,例如可以以天或月为周期,同时,这个类同时实现了RollingPolicy接口和TriggeringPolicy接口。在RollingFileAppender中只使用这个类就可以了,项目中就是使用的这个RollingPolicy,日期格式由%d{yyyy-MM-dd}指定,%i是索引。具体配置可参考上述的配置文件。RollingPolicy还有一此其它属性,具体可参考官方文档,项目中未使用到,例如最大历史期限等。 LogBack也提供了FixedWindowRollingPolicy,该类未使用,可参考官方文件。 此外,我们还可以根据时间和大小来决定滚动策略,在项目中使用的就是这种类型,项目中使用配置文件可见上述,下面为官方提供的配置文件:
  
  
    
    
     mylog.txt
     
     
      
     
      mylog-%d{yyyy-MM-dd}.%i.txt
      
      
       
      
       100MB
       
      
     
     
     
      %msg%n
      
     
   


  
    
     
   


  

TriggeringPolicy SizeBasedTriggeringPolicy:控制当前文件大小,如果日志文件大于指定的大小,则触发滚动,由maxFileSize属性指定,该值可以取KB、MB、及GB,如下下面的配置文件(官方提供的,未在项目中使用):
  
  
    
    
     test.log
     
     
     
      test.%i.log.zip
      
     
      1
      
     
      3
      
     
     
     
      5MB
      
     
     
     
      %-4relative [%thread] %-5level %logger{35} - %msg%n
      
     
   
	
  
    
     
   

  

Filter

项目中使用到了LevelFilter和ThresholdFilter两种,官方还提供了其它的Filter可参考。 LevelFilter:基于精确匹配,如果事件的级别与配置的级别相同,则将会根据已经配置的onMatch和onMismatch的属性决定接受或拒绝,如果项目中的使用的配置文件中的FILEERROR、FILEWARN、FILEINFO、FILEDEBUG,下面的配置是官方提供的配置:
  
  
    
     
     
      INFO
      
     
      ACCEPT
      
     
      DENY
      
     
     
     
       %-4relative [%thread] %-5level %logger{30} - %msg%n 
      
     
   
  
    
     
   

  

ThresholdFilter:指定下限级别,低于此级别的事件将被拒绝,如果项目中使用的配置文件中的stdout的配置,下面为官方提供的配置:

  
  
    
     
     
     
      INFO
      
     
     
     
       %-4relative [%thread] %-5level %logger{30} - %msg%n 
      
     
   
  
    
     
   

  
官方提供了其它的Filter,也可以自己实现自己的Filter,具体参考官方文档。

问题

1、路径 这个问题在配置文件中做了详细的注释,请参考。 2、关于Spring或其它已经使用了log4j、common-logging或java.util.longging的集成 LogBack提供了jcl-over-slf4j和jul-to-slf4j,jcl是指common-logging,jul指java.utils.longging,如果需要将Spring的日志统一处理,就需要将jcl-over-slf4j的包加入到工作中,项目中使用Maven开发,依赖如下:
  
			
   
    ch.qos.logback
   
			
   
    logback-core
   
			
   
    1.0.13
   
		
  
		
  
			
   
    ch.qos.logback
   
			
   
    logback-classic
   
			
   
    1.0.13
   
		
  
		
  
			
   
    org.slf4j
   
			
   
    jcl-over-slf4j
   
			
   
    1.7.0
   
		
  
		
  
			
   
    ch.qos.logback
   
			
   
    logback-access
   
			
   
    1.0.13
   
		
  
3、代码区别 源写法:
if (logger.isInfoEnabled()) {
	logger.info("***** BaseAuthoritiesResourcesServiceImpl.getList() method begin*****");
}
使用LogBack之后,可将if判断去掉,如下:
logger.debug("***** BaseDictionaryServiceImpl.delete() method begin*****");
如果日志级别高于Debug,则这一行日志信息将不会输出。