logback的简单分析

controller.java

 @GetMapping("/allLog")
    public String allLog() {
        logger.trace("------>trace Msg");
        logger.debug("------>debug Msg");
        logger.info("------>info Msg");
        logger.warn("------>warn Msg");
        logger.error("------>error Msg");
        return "success";
    }
    
    
        
        
        
        
    

当配置了additivity后,该logger处理的日志不会再交由父级处理

现象:控制台没打印,文件没记录,因为该logger未配置appender且不向父级传递日志信息。

当把root中的appender-ref都拷贝到上面的logger里面,则控制台打印,文件有记录。



    
        
        
        
        
    

level属性的传递性:当子logger未设置level属性时,会设置为父级的level,即使设置了additivity=”false“,这足以证明level的传递性与additivity无关,仅与有无level属性有关。

需要注意的是,要注意避免下面这种配置写法 :

    

        
        
        
        

    
    
        
        
        
        
    

由于additivity属性默认是true,所以日志会传递到父级进行处理,所以这种配置会产生下面的结果

951171 [http-nio-9099-exec-8] DEBUG c.m.mylog.controller.DemoController - ------>debug Msg 
951171 [http-nio-9099-exec-8] DEBUG c.m.mylog.controller.DemoController - ------>debug Msg 
951172 [http-nio-9099-exec-8] INFO  c.m.mylog.controller.DemoController - ------>info Msg 
951172 [http-nio-9099-exec-8] INFO  c.m.mylog.controller.DemoController - ------>info Msg 
951174 [http-nio-9099-exec-8] WARN  c.m.mylog.controller.DemoController - ------>warn Msg 
951174 [http-nio-9099-exec-8] WARN  c.m.mylog.controller.DemoController - ------>warn Msg 
951174 [http-nio-9099-exec-8] ERROR c.m.mylog.controller.DemoController - ------>error Msg 
951174 [http-nio-9099-exec-8] ERROR c.m.mylog.controller.DemoController - ------>error Msg 

即additivity为true且子logger已经设置level属性时,父级的level会被覆盖。

利用这个特点,可以使用下面的配置实现子级logger配置特有appender,root配置公有appender。比如下面示例,下面这种使用情况应该基本不存在


        
    
    
        
        
        

    

emmmm。。。这种东西知道了 也没太大用处,尽量还是使用下面这种比较标准的配置吧

  
    
    
        
        
        
        
    

嗯 这种还是最好用的

你可能感兴趣的:(logback的简单分析)