springboot 2.5.2 配置 log4j2, 默认配置文件: spring-boot-2.5.2.RELEASE.jar/org/springframework/boot/logging/logback/defaults.xml
依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><!--排除默认的日志框架--><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!--log4j2--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency>
配置文件
resources 目录下放置 log4j2.xml 文件即可
<?xml version="1.0" encoding="UTF-8"?><Configuration status="OFF" monitorInterval="1800"><Properties><property name="LOG_HOME">/app/logs/routerService</property><property name="FILE_NAME">routerService</property><property name="ERROR_FILE_NAME">error</property><Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property><Property name="LOG_LEVEL_PATTERN">%5p</Property><Property name="CONSOLE_LOG_DATEFORMAT_PATTERN">HH:mm:ss.SSS</Property><Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property><Property name="CONSOLE_LOG_PATTERN">%clr{%d{${sys:CONSOLE_LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${sys:LOG_LEVEL_PATTERN}} %clr{%pid}{magenta} %clr{-}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property><Property name="FILE_LOG_PATTERN">%d{${sys:LOG_DATEFORMAT_PATTERN}} ${sys:LOG_LEVEL_PATTERN} %pid - [%t][%file:%line] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property></Properties><Appenders><!--控制台日志--><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}"/></Console><!--正常文件日志--><RollingFile name="File" fileName="${LOG_HOME}/${FILE_NAME}.log"filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log"immediateFlush="true"><PatternLayout pattern="${sys:FILE_LOG_PATTERN}" charset="${sys:FILE_LOG_CHARSET}"/><Policies><!--设置日志基础文件大小,超过该大小就触发日志文件滚动更新--><SizeBasedTriggeringPolicy size="200 MB"/><!--设置日志文件滚动更新的时间,依赖于文件命名 filePattern 的设置--><TimeBasedTriggeringPolicy/></Policies><!--设置日志的文件个数上限,不设置默认为7个,超过大小后会被覆盖;依赖于filePattern中的%i--><DefaultRolloverStrategy max="20"/></RollingFile><!--错误文件日志--><RollingFile name="ErrorFile" fileName="${LOG_HOME}/${ERROR_FILE_NAME}.log"filePattern="${LOG_HOME}/$${date:yyyy-MM}/${ERROR_FILE_NAME}-%d{yyyy-MM-dd}-%i.log"immediateFlush="true"><ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${sys:FILE_LOG_PATTERN}" charset="${sys:FILE_LOG_CHARSET}"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="200 MB"/></Policies><DefaultRolloverStrategy max="20"/></RollingFile></Appenders><Loggers><Root level="debug"><AppenderRef ref="Console"/><AppenderRef ref="File"/><AppenderRef ref="ErrorFile"/></Root><logger name="org.springframework.core" level="info"/><logger name="org.springframework.beans" level="info"/><logger name="org.springframework.context" level="info"/><logger name="org.springframework.web" level="info"/><logger name="org.apache.http" level="warn"/></Loggers></Configuration>
spring 增强
推荐配置文件命名为 log4j2-spring.xml, spring boot 会添加一些 spring boot 特有的配置项
名词解释
%d{HH: mm:ss.SSS}——日志输出时间
%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
%-5level——日志级别,并且使用5个字符靠左对齐
%logger{36}——日志输出者的名字
%msg——日志消息
%n——平台的换行符
