文章目录
- 一 Log4J2 相关概念及基本特点
- 二 Spring Boot3 中启用Log4J2的pom.xml配置
- 三 application.properties 的配置
- 四 完整配置
一 Log4J2 相关概念及基本特点
Log4J2是Apache Log4j的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升。
Logger:日志记录器,用于标识日志的来源。常见的有两种:Root和Logger。Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出
Appender:日志输出器,用于将日志记录输出到指定的目标。常见的有三种子节点:Console、RollingFile、File。Console节点用来定义输出到控制台的Appender;RollingFile节点用来定义超过指定条件自动删除旧的创建新的Appender;File节点用来定义输出到指定位置的文件的Appender。
Layout:日志格式化器,用于定义日志记录的输出格式。Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出。
二 Spring Boot3 中启用Log4J2的pom.xml配置
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>
排除原依赖中的日志相关包,单独引入Log4J2依赖。
三 application.properties 的配置
# 控制台输出的字符集
logging.charset.console=UTF-8
# 日志写入文件的字符集
logging.charset.file=UTF-8
# Log4J2自定义配置的路径,放置到resources目录下
logging.config=classpath:logback.xml
# 应用程序包的路径
logging.level.com.test=INFO
# 日志存放路径
logging.file.path=logs/test.log
四 完整配置
配置文件的名称为:logback.xml,放置于resources目录下。
<?xmlversion="1.0" encoding="UTF-8"?><!--status:用来指定log4j2本身的打印日志的级别,monitorinterval:用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s-->
<Configuration status="WARN" monitorInterval="30"><Properties><Property name="logDir">logs</Property><Property name="logFile">cmams</Property><Property name="level">DEBUG</Property></Properties><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="[%-4level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{96}:%line - %msg%n"/><!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/></Console><RollingFile name="File" fileName="${logDir}/${logFile}.log"filePattern="${logDir}/${logFile}-%d{yyyy-MM-dd}-%i.log.gz"><!--日志输出格式--><PatternLayout pattern="[%-4level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{96}:%line - %msg%n"/><!--满足任何一个policy即进行归档--><Policies><!--当前日志与开始日期不匹配(RollingFile中配置的filePattern中配置的最小时间单位不匹配时)时进行归档--><TimeBasedTriggeringPolicy/><!--文件超过512M进行归档,SizeBasedTriggeringPolicy规定了当日志文件达到了指定的size时,触发rollover操作。size参数可以用KB、MB、GB等做后缀来指定具体的字节数,如20MB--><SizeBasedTriggeringPolicy size="64MB"/></Policies><!--归档的文件最大数量,max参数指定了计数器的最大值。一旦计数器达到了最大值,过旧的文件将被删除。--><DefaultRolloverStrategy max="20"><!--删除规则--><Delete basePath="${logDir}" maxDepth="2"><!--匹配文件规则--><IfFileName glob="*.log.gz"><IfLastModified age="60d"><IfAny><!--logDir下文件总大小超过5GB,进行删除--><IfAccumulatedFileSize exceeds="5GB"/><!--logDir下文件总数量超过100,进行删除--><IfAccumulatedFileCount exceeds="100"/></IfAny></IfLastModified></IfFileName></Delete></DefaultRolloverStrategy></RollingFile></Appenders><Loggers><!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。--><Logger name="com.cxwn.cmams" level="${level}" additivity="false"><AppenderRef ref="File"/><AppenderRef ref="Console"/></Logger><Logger name="org.springframework" level="ERROR" additivity="false"><AppenderRef ref="Console"/><AppenderRef ref="File"/></Logger><Root level="WARN"><AppenderRef ref="Console"/><AppenderRef ref="File"/></Root></Loggers>
</Configuration>