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-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自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)
还没有评论,来说两句吧...