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中的用户信息),可根据需求调整。