springboot 日志管理之 logback

springboot 日志管理之 logback

码农世界 2024-05-16 后端 71 次浏览 0个评论

1、logback 简介

        在springboot 中,任何一个 spring-boot-starter-* 都会默认导入一个 spring-boot-starter-logging 启动器依赖,默认集成的是 logback 日志,可以在项目的 application.yml 中添加日志相关配置,也可以直接指定日志配置文件进行配置。

2、集成 logback 的方式

2.1、springboot 方式

        任何一个 spring-boot-starter-* 都会默认导入一个 spring-boot-starter-logging 启动器依赖,因此只要当前项目的依赖中有starter,无需显式引入。

2.2、非 springboot 项目

        需要在当前项目中的 pom 文件中引入以下依赖:



	ch.qos.logback
	logback-classic
	1.2.3

3、日志配置文件的命名规范

        springboot 框架默认加载 logback 的日志配置文件是 logback-spring.xml,如果需要自定义配置文件名,需要在当前项目中指定日志配置文件。配置文件引入配置如下:

logging.config=classpath:mylogback.xml  # 在 resources 目录下定义

4、logback 配置文件详解

4.1、logback 配置文件使用的标准

        一般 logback-spring.xml 文件中没有这些信息,添加之后可以在写配置文件的时候有提示。


  
4.2、动态加载配置文件

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


    
logback   

4.4、appender 标签

        appender 标签是 configuration 的子节点,是负责写日志的组件;其有两个必要的属性: name 和 class。

name 表示 appender 的名称,class 表示使用 appender 类型的全限定类名。

主要有以下几种 appender:


  






4.4.1、控制台输出的 ConsoleAppender
 
 
  
  
     [%d{HH:mm:ss.SSS}] [%-5level] [%thread] [%logger] [%msg]%n
  
 
4.4.2、输出到文件的 FileAppender

  
    testFile.log   
    true       
      
       [%d{HH:mm:ss.SSS}] [%-5level] [%thread] [%logger] [%msg]%n  
      
  
4.4.3、滚动输出到文件 
   
   test.log  
       
      logFile.%d{yyyy-MM-dd}.log   
      30    
     
   
      
      tests.%i.log.zip   
      1   
      3   
     
    
      
      5MB   
      
      
      %-4relative [%thread] %-5level %logger{35} - %msg%n   
      
 
4.4.3.1、滚动策略(RollingPolicy):

1、TimeBasedRollingPolicy:最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动。

有以下几个标签:

1)、fileNamePattern:必要节点,包含文件名及“%d”转换符, 如:%d{yyyy-MM}。如果直接使用 %d,默认格式是 yyyy-MM-dd。

2)、maxHistory:可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个月滚动,且值是6,则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除。

3)、file:RollingFileAppender 的file子节点可有可无,通过设置file,可以为活动文件和归档文件指定不同位置,当前日志总是记录到file指定的文件(活动文件),活动文件的名字不会改变;如果没设置file,活动文件的名字会根据fileNamePattern 的值,每隔一段时间改变一次。

4)、totalSizeCap:日志最大保存的大小。当超过该值,会自动删除老的日志文件。必须和maxHistory一起使用,而且maxHistory先生效,其次是判断是否达到totalSizeCap。

5)、cleanHistoryOnStart:默认false。如果设置为true,再项目启动的时候会自动删除老的日志文件。

2、FixedWindowRollingPolicy: 根据固定窗口算法重命名文件的滚动策略。

有以下几个标签:

1)、minIndex:窗口索引最小值。

2)、maxIndex:窗口索引最大值。

3)、fileNamePattern : 必须包含 %i,例如,假设最小值和最大值分别为1和2,命名模式为 mylog%i.log,会产生归档文件 mylog1.log 和 mylog2.log。还可以指定文件压缩选项,例如,mylog1.log.gz 或者 mylog1.log.zip。

4.4.3.2、触发策略(TriggeringPolicy) :

1、SizeBasedTriggeringPolicy:查看当前活动文件的大小,如果超过指定大小会告知RollingFileAppender 触发当前活动文件滚动。

有以下子标签:

maxFileSize:这是活动文件的大小,默认值是 10MB;

4.4.3.3、过滤器 (Filter)

1、LevelFilter :级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据 onMath 和 onMismatch 接收或拒绝日志;

有以下子节点 :
level: 设置过滤级别;

onMatch: 用于配置符合过滤条件的操作,DENY,NEUTRAL,ACCEPT;

onMismatch: 用于配置不符合过滤条件的操作,DENY,NEUTRAL,ACCEPT。

2、ThresholdFilter:临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝,只有一个 level 子节点。

4.5、logger 标签

        用来设置某一个包或者具体的某一个类的日志打印级别、以及指定 appender;仅有一个 name 属性,一个可选的 level 和一个可选的 addtivity 属性。

name:用来指定受此 logger 约束的某一个包或者具体的某一个类;

level:用来设置打印级别,大小写无关,还有一个特定值 INHERITED 或者同义词 NULL,代表强制执行上级的级别。 如果未设置此属性,那么当前logger将会继承上级的级别。

additivity:是否向上级 logger 传递打印信息,默认是 true。


   
4.6、root 标签

        root 标签是必选节点,用来指定最基础的日志输出级别,只有一个 level 属性,默认是 debug,可以包含零个或多个元素。标识这些 appender 将会添加到这个 logger。

root 表示当前项目中根节点的日志,如果一个项目名称为 com.test.demo,有几个 logger 记录器:root -> com -> com.test -> com.test.demo。


   
   
   
   
   

5、完整的 logback-spring.xml 文件


  
    
    
	
	    
    logback

    
      
    
    
    
        
        
            
            
            [%d{HH:mm:ss.SSS}] [%highlight(%-5level)] [%green(%thread)] [%blue(%logger)] %msg%n
        
        
        
            info
        
        
        
            debug
            ACCEPT
            DENY
        
    
    
      
        testFile.log  
        true   
          
          %-4relative [%thread] %-5level %logger{35} - %msg%n  
          
     
    
       
        test.log      
           
          tests.%i.log.zip   
          1   
          3   
              
           
          5MB   
           
           
          %-4relative [%thread] %-5level %logger{35} - %msg%n   
           
               
    
    
    
        
        
    
    
    

总结:springboot 默认集成的是 logback 日志框架,使用的是 sl4j 日志门面。以上关于 logback 的使用和配置足以满足项目的使用。

        本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)

springboot 日志管理之 logback

转载请注明来自码农世界,本文标题:《springboot 日志管理之 logback》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,71人围观)参与讨论

还没有评论,来说两句吧...

Top