小工具知识网

当前位置: 首页 > 行业知识 > springboot 日志管理之 logback

行业知识

springboot 日志管理之 logback

2026-11-07 13:59:52 来源:互联网转载

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.logbacklogback-classic1.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自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)

上一篇:怎么查看服务器密码?

下一篇:宝塔面板,轻松搞定网站PHP修改,详解教程!