配置示例
application.properties
logging.config=classpath:log4j2-spring.xml
log4j2-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<RollingFile name="RollingFileInfo" fileName="/data/logs/server/server.log"
filePattern="/data/logs/server/server-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}:%L - %msg%n"/>>
<Filters>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="30 MB"/>
</Policies>
</RollingFile>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p %c:%L [%t] - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="RollingFileInfo"/>
</Root>
</Loggers>
</Configuration>
日志级别
日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL
Appender配置 占位符
| 符号 | 含义 |
|---|
| %d{HH:mm:ss.SSS} | 输出到毫秒的时间 |
| %t | 输出当前线程名称 |
| %-5level | 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0 |
| %logger | 输出logger名称,因为Root Logger没有名称,所以没有输出 |
| %msg | 日志文本 |
| %n | 换行 |
| %F | 输出所在的类文件名,如Client.java |
| %L | 输出行号 |
| %M | 输出所在方法名 |
| %l | 输出语句所在的行数, 包括类名、方法名、文件名、行数 |
RollingRandomAccessFile的属性
| 属性 | 含义 |
|---|
| fileName | 指定当前日志文件的位置和文件名称 |
| filePattern | 指定当发生Rolling时,文件的转移和重命名规则 |
| SizeBasedTriggeringPolicy | 指定当文件体积大于size指定的值时,触发Rolling |
| DefaultRolloverStrategy | 指定最多保存的文件个数 |
| TimeBasedTriggeringPolicy | 这个配置需要和filePattern结合使用,注意filePattern中配置的文件重命名规则是${FILE_NAME}-%d{yyyy-MM-dd HH-mm}-%i,最小的时间粒度是mm,即分钟,TimeBasedTriggeringPolicy指定的size是1,结合起来就是每1分钟生成一个新文件。如果改成%d{yyyy-MM-dd HH},最小粒度为小时,则每一个小时生成一个文件。 |