学完本篇不要再说你不会logback

一 前言

知识追寻者springboot系列之logback,觉得文章不错,点赞加关注谢谢;关注公众号知识追寻者获取更多精彩原创内容;

logback是一个成熟的log4j 工程,由 Ceki Gülcü 所创造,也是 log4j 日志框架的创建者;

springboot默认使用的日志框架是logback,其由三个组件组成

  • logback-core
  • logback-classic
  • logback-access

logback-spring.xml 文件放在classpath (resource目录)下 即可自动加载

二logback 基本属性

 

   
    
    
      %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
    
  

  
    
  

日志格式说明

  1. %d 表示日期时间
  2. %thread表示线程名
  3. %-5level:级别从左显示5个字符宽度
  4. Logger :通常使用源代码的类名
  5. %msg:日志消息
  6. %n是换行符

有效的日志级别如下

level of request p
TRACE DEBUG INFO WARN ERROR OFF
TRACE YES NO NO NO NO NO
DEBUG YES YES NO NO NO NO
INFO YES YES YES NO NO NO
WARN YES YES YES YES NO NO
ERROR YES YES YES YES YES NO

2.1 configuration 标签属性

  • scan : 配置文件如果发生改变,将会被重新加载,默认值为true
 
	...

  • debug: 实时查看logback运行状态,默认值为false
 
  ... 

  • scanPeriod: 监测配置文件是否有修改的时间间隔, 默认 每分钟;读者可以设置 示例 30 seconds, 30 minutes , 3 hours
 
  ...
 
  • packagingData : 堆栈跟踪中是否启用打包数据,默认false;

  ...

2.2 statusListener 标签

statusListener 为configuration 的子元素。称为状态监听器,在 configuration 的子标签顶层,意指监听事件;


    

  ... the rest of the configuration file  

2.3 property标签

属性 name , value 用来定义变量的 名称 和值 ,在上下文中可以通过 ${name} 的方式进行调用



  

  
    ${USER_HOME}/myApp.log
    
      %msg%n
    
  

  
    
  

如果 定义如下示例会去 variables1.properties 中读取配置信息



  

  
     ${USER_HOME}/myApp.log
     
       %msg%n
     
   

   
     
   

variables1.properties:

USER_HOME=/home/sebastien

2.4appender标签

appender 为configuration 的子元素,每个 appender 都是一个日志组件, 可以定义一种类型的日志;

  • name :appender 的名称,该值主要用于 ref
  • class:定义appender 组件。
  • scope:指定作用域 ; LOCAL, CONTEXT , SYSTEM

如下示例 : 定义2 个组件, 一个是文件存储,一个控制输出,通过 root 标签引用即可同时生效;



  
    myApp.log

    
      %date %level [%thread] %logger{10} [%file:%line] %msg%n
    
  

  
    
      %msg%n
    
  

  
    
    
  

2.5contextName标签

contextNameconfiguration 的子元素。每一个logger 都可以绑定一个contextName,默认上下文名称为 default , 如果设定完成,则不能改变;


  myAppName
  
    
      %d %contextName [%t] %level %logger{36} - %msg%n
    
  

  
    
  

2.6 logger标签

用来设置某个包或及具体的某个类的日志输出以及指定 ; name 属性一个, level,addtivity(是否向上级loger传递打印信息) 属性可选

如下所示,不想看见包chapters.configuration 中的debug级别日志,可以进行如下配置



  
    
    
      %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
    
  

  

  
  
            
    
    
  

打印如下

17:34:07.578 [main] INFO  chapters.configuration.MyApp3 - Entering application.
17:34:07.578 [main] INFO  chapters.configuration.MyApp3 - Exiting application.

2.7 root 标签

root标签实质是 标签,不过其是根标签;若 标签为设置输出级别时就会默认继承该标签设置的级别!


	
		
		
	

2.8 include标签

包含其它文件的配置信息


  

  
    
  


includedConfig.xml 示例,必须包含标签


  
    
      "%d - %m%n"
    
  

如过是URL


三 多环境配置

为了支持 development, testing 和 production 多环境下logback 不冲突的问题,可以使用 , then 进行配置,使目标环境生效;

格式如下

 
   
    
      ...
    
  
  
  
  
    
      ...
    
    
      ...
        
  

四 示例

4.1正常日志appender示例



    true
    
    ${logging.path}/zszxz-spring-boot/zszxz-error.log
    
    
        
        ${logging.path}/zszxz-boot/zszxz.log.%d{yyyy-MM-dd}
        
        30
    
    
        
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
        UTF-8
    


4.2错误日志appender示例



    true
    
    
        error
    
    
    ${logging.path}/zszxz-spring-boot/zszxz-error.log
    
    
        
        ${logging.path}/zszxz-boot/zszxz-error.log.%d{yyyy-MM-dd}
        
        30
    
    
        
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
        
        UTF-8
    

五 参考文档

更多的日志配置内容请参照官方文档

http://logback.qos.ch/manual/index.html

你可能感兴趣的:(学完本篇不要再说你不会logback)