Logback日志配置

一、配置文件

 1.1 元素

        元素为配置文件根节点,包含的属性如下所示:

  • scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  • scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  • debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

1.2 root节点

        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。默认是DEBUG。
        可以包含零个或多个元素,标识这个appender将会使用root设置的日志级别。

    
    
        
        
        
    

1.3 property节点,变量设置

        Property 用来定义变量值的标签,有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量


    
    

1.4 appender节点    

        appender用来格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略文件输出策略。控制台打印配置,用于开发环境,如下:

    
    
    
        
            
            INFO
            
            ACCEPT
            
            DENY
        
        
        
            ${CONSOLE_LOG_PATTERN}
            UTF-8
        
    

        除了控制台输出策略,最常用的是文件输出策略,如下所示:

    
    
        
         
            
            ERROR
            
            DENY
            
            ACCEPT
        
        
        

        
        
            
            logs/${logFile}/info-%d{yyyy-MM-dd}.part_%i.log
            
            90
            
            
            
                
                100MB
            
        

        
        
        
        
        
            ${FILE_LOG_PATTERN}
            UTF-8 
        
    

1.4.1 元素

        filter中最重要的两个过滤器为:LevelFilter、ThresholdFilter

        LevelFilter 根据精确的级别匹配过滤事件。 如果事件的级别等于配置的级别,则筛选器接受或拒绝该事件,具体取决于onMatch和onMismatch属性的配置。 例如下面配置将只打印INFO级别的日志,其余的全部禁止打印输出:

        
            
            INFO
            
            ACCEPT
            
            DENY
        

        ThresholdFilter 过滤低于指定阈值的事件。 对于等于或高于阈值的事件,ThresholdFilter将在调用其decision()方法时响应NEUTRAL。 但是,将拒绝级别低于阈值的事件,例如下面的配置将拒绝所有低于Error级别的日志,只输出Error以及以上级别的日志:
 




     Error

1.4.2 RollingFileAppender

        RollingFileAppender,是FileAppender的一个子类,扩展了FileAppender,具有翻转日志文件的功能。 例如,RollingFileAppender 可以记录到名为log.txt文件的文件,并且一旦满足某个条件,就将其日志记录目标更改为另一个文件。

        有两个与RollingFileAppender交互的重要子组件。 第一个RollingFileAppender子组件,即 RollingPolicy 负责执行翻转所需的操作。 RollingFileAppender的第二个子组件,即 TriggeringPolicy 将确定是否以及何时发生翻转。 因此,RollingPolicy 负责什么和TriggeringPolicy 负责什么时候

        作为任何用途,RollingFileAppender 必须同时设置 RollingPolicy 和 TriggeringPolicy。 但是,如果其 RollingPolicy 也实现了TriggeringPolicy 接口,则只需要显式指定前者

滚动策略如下:

  • TimeBasedRollingPolicy:可能是最受欢迎的滚动策略。 它根据时间定义翻转策略,例如按天或按月。 TimeBasedRollingPolicy承担滚动和触发所述翻转的责任。 实际上,TimeBasedTriggeringPolicy实现了RollingPolicy和TriggeringPolicy接口。
  • SizeAndTimeBasedRollingPolicy:有时您可能希望按日期归档文件,但同时限制每个日志文件的大小,特别是如果后处理工具对日志文件施加大小限制。 为了满足此要求,logback 提供了 SizeAndTimeBasedRollingPolicy ,它是TimeBasedRollingPolicy的一个子类,实现了基于时间和日志文件大小的翻滚策略。

            
                
                logs/${File_Name}/info-%d{yyyy-MM-dd}.part_%i.log
                
                90
                
                
                
                    
                    100MB
                
            

 1.5 元素

        encoder中最重要就是pattern属性,它负责控制输出日志的格式。

其中:%d{yyyy-MM-dd HH:mm:ss.SSS}:日期

           %-5level:日志级别

           %highlight():颜色,info为蓝色,warn为浅红,error为加粗红,debug为黑色

           %thread:打印日志的线程

           %15.15():如果记录的线程字符长度小于15(第一个)则用空格在左侧补齐,如果字符长度大于15(第二个),则从开头开始截断多余的字符 

           %logger:日志输出的类名

           %-40.40():如果记录的logger字符长度小于40(第一个)则用空格在右侧补齐,如果字符长度大于40(第二个),则从开头开始截断多余的字符

           %cyan:颜色

           %msg:日志输出内容

           %n:换行符
 

1.6 详细配置文件 





    
    

    
    
    

    
    
    
    
    
        
            
            INFO
            
            ACCEPT
            
            DENY
        
        
        
            ${CONSOLE_LOG_PATTERN}
            UTF-8
        
    

    
    
        
         
            
            ERROR
            
            DENY
            
            ACCEPT
        
        
        

        
        
            
            logs/${logFile}/info-%d{yyyy-MM-dd}.part_%i.log
            
            90
            
            
            
                
                100MB
            
        

        
        
        
        
        
            ${FILE_LOG_PATTERN}
            UTF-8 
        
    

    
        
        
        
            Error
        
        
        
        
        
            
            logs/${logFile}/error-%d{yyyy-MM-dd}.part_%i.log
            
            90
            
                
                100MB
            
        
        
            ${FILE_ERROR_PATTERN}
            UTF-8 
        
    

    
    
        
        
        
    


二、指定写入日志的文件

        有时,我们需要在写日志的时候,指定写入的路径,也就是将不同的日志写入不同的文件中,为了实现这样的需求,可以采用以下配置:





    
    

    
    
    

    
    
    
        
            
            INFO
            
            ACCEPT
            
            DENY
        
        
        
            ${CONSOLE_LOG_PATTERN}
            UTF-8
        
    

    
        
        
            File_Name
            AepConsumerServe
        
        
            
            
                
                 
                    
                    ERROR
                    
                    DENY
                    
                    ACCEPT
                
                
                

                
                
                    
                    D:/logs/GuoXin/${File_Name}/info-%d{yyyy-MM-dd}.part_%i.log
                    
                    90
                    
                    
                    
                        
                        100MB
                    
                

                
                
                
                
                
                    ${FILE_LOG_PATTERN}
                    UTF-8 
                
            
        
    

    
        
            File_Name
            AepConsumerServe
        
        
            
                
                
                
                    Error
                
                
                
                
                
                    
                    D:/logs/GuoXin/${File_Name}/error-%d{yyyy-MM-dd}.part_%i.log
                    
                    90
                    
                        
                        100MB
                    
                
                
                    ${FILE_ERROR_PATTERN}
                    UTF-8 
                
            
        
    

    
    
        
        
        
    






对应的类:

public class LogService {

    private Logger logger = LoggerFactory.getLogger(LogService.class);

    /**
     * 记录info日志
     */
    public void info(String fileName,String msg){
        MDC.put("File_Name", fileName);
        logger.info(msg);
        MDC.remove("File_Name");
    }

    /**
     * 记录error日志
     */
    public void error(String fileName,String msg){
        MDC.put("File_Name", fileName);
        logger.error(msg);
        MDC.remove("File_Name");
    }

}

        这样,就可以实现在写日志的时候指定写入文件的路径,将日志写入到不同的文件中。但是,这种方式比较耗费性能,一般不建议采用。

你可能感兴趣的:(Log,logback,java)