Java日志在CentOS中的格式选择
一、选择思路
二、常用框架与推荐格式
| 框架 | 推荐 pattern | 适用场景 | 关键字段说明 |
|---|---|---|---|
| Logback | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n |
控制台与文件通用 | 时间到毫秒、线程名、级别左对齐、logger 缩写、消息 |
| Log4j 1.x | %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n |
传统项目 | 类名简写+行号,便于定位 |
| Log4j 2.x | %d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n |
控制台与文件通用 | 与 Logback 类似,使用 %t 表示线程 |
| JUL(java.util.logging) | java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$S %4$s %2$s %5$s%6$s%n |
无第三方依赖 | 时间、日志器名、线程名、级别、消息 |
三、CentOS落地与运维建议
/var/log/myapp/*.log { daily; rotate 7; compress; missingok; notifempty; create 0644 app app; }四、快速模板与验证
<configuration>
<property name="LOG_PATH" value="/var/log/myapp"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %X{traceId:-} %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %X{traceId:-} %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %X{traceId:-} %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info"><AppenderRef ref="Console"/></Root>
</Loggers>
</Configuration>
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatterjava.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$S %4$s %2$s %5$s%6$s%n