log4j2.xml 是 Log4j 2 的核心配置文件,用于定义日志输出格式、目标、级别过滤和滚动策略;需包含 Configuration 根元素、Appenders 和 Loggers,支持 Console 与 RollingFile 输出,级别区分大小写且按 OFF>FATAL>ERROR>WARN>INFO>DEBUG>TRACE>ALL 排序。

log4j2.xml 是 Log4j 2 的核心配置文件,用于定义日志输出格式、目标(控制台、文件等)、级别过滤和滚动策略。日志级别控制哪些消息会被记录(如 DEBUG 只输出 DEBUG 及以上),合理配置能减少冗余日志、提升性能并便于问题排查。
基础结构:根节点与Appender声明
一个最小可用的 log4j2.xml 至少包含 Configuration 根元素、Appenders(输出目的地)和 Loggers(日志器,含级别设置):
- Console Appender:向控制台输出,适合开发调试
- RollingFile Appender:写入文件,并支持按大小或时间自动归档(如每天一个文件、单个文件超100MB就切分)
- 每个 Appender 可绑定独立的 Layout(如 PatternLayout),定义日志格式(时间、类名、级别、消息等)
日志级别怎么配:从根Logger到具体包
Log4j 2 默认日志级别顺序为:OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL。级别越低,输出越详细。
- rootLogger 是全局兜底,设为 INFO 表示所有未单独配置的类默认只输出 INFO 及以上
- 对特定包/类可单独指定更细粒度级别,例如:Spring 框架日志调为 WARN 避免大量 DEBUG 冗余;自己模块设为 DEBUG 方便排查
- 级别区分大小写,必须用全大写(如
level="DEBUG"),写成 debug 或 Debug 会报错或失效
常见实用配置片段(可直接参考)
以下是一个兼顾开发与生产环境的典型配置示意(省略 XML 声明和命名空间):
<Configuration status="WARN"><Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10MB"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.example.myapp.service" level="DEBUG" additivity="false">
<AppenderRef ref="RollingFile"/>
</Logger>
<Logger name="org.springframework" level="WARN" />
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
关键细节别忽略
- additivity="false":避免日志重复输出(子 Logger 默认会向上委托给父 Logger,设为 false 后只输出到自己指定的 Appender)
- status="WARN":控制 Log4j 自身内部日志级别(非业务日志),设为 DEBUG 可查加载过程问题
- 文件路径建议用相对路径(如
logs/app.log),确保应用有写权限;生产环境推荐绝对路径并预创建目录 - PatternLayout 中常用占位符:
%d时间、%t线程名、%-5level级别(左对齐宽5)、%logger{36}类名缩写、%msg日志内容、%n换行










