CentOS Java日志格式概述
在CentOS系統中,Java應用程序的日志格式主要由所使用的日志框架決定,常見框架包括Log4j(含Log4j 2)、Logback及Java自帶的java.util.logging(JULI)。不同框架通過各自的配置文件定義日志格式,以下是具體說明:
Log4j 1.x通過log4j.properties
或log4j.xml
配置文件設置日志格式,核心配置項為ConversionPattern
(PatternLayout屬性),用于定義日志的輸出結構。
log4j.properties
示例:log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
其中,%d
表示日期時間(格式為年-月-日 時:分:秒
),%-5p
表示日志級別(左對齊,占5位),%c{1}
表示類名(僅顯示最后一級),%L
表示行號,%m
表示日志消息,%n
表示換行符。log4j.xml
示例:<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
</layout>
</appender>
<root>
<priority value="info"/>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
兩者效果一致,均會輸出類似2025-10-09 14:30:00 INFO MyClass:123 - This is a log message
的日志。Logback通過logback.xml
配置文件設置日志格式,核心配置項為encoder
下的pattern
屬性,語法與Log4j類似但更靈活。
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
其中,%d
表示日期時間(可添加毫秒SSS
),[%thread]
表示線程名(方括號包裹),%-5level
表示日志級別(左對齊,占5位),%logger{36}
表示logger名稱(最長36個字符,超出部分用...
省略),%msg
表示日志消息,%n
表示換行符。2025-10-09 14:30:00.123 [main] INFO com.example.MyClass - This is a log message
。JULI是Java自帶的日志框架,通過logging.properties
配置文件設置日志格式,核心配置項為SimpleFormatter.format
。
handlers=java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.level=INFO
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s %2$s %5$s%6$s%n
其中,%1$tY
表示年份(4位),%1$tm
表示月份(2位),%1$td
表示日期(2位),%1$tH
表示小時(24小時制),%1$tM
表示分鐘,%1$tS
表示秒,%4$s
表示logger名稱(占4位,右對齊),%2$s
表示線程名,%5$s
表示日志級別(占5位,左對齊),%6$s
表示日志消息,%n
表示換行符。2025-10-09 14:30:00 INFO MyClass This is a log message
。src/main/resources
目錄),否則框架無法識別。%X{user}
表示MDC中的用戶信息),可根據需求調整。