log4j.xml、log4j2.xml、log4j.properties都是什么?
0.背景
项目中用的SpringMVC框架,这里面用的log4j家族的东西作为日志管理,但是发现代码配置里比较混乱,log4j.xml、log4j2.xml、log4j.properties 都有。这篇文章就来简单区分一下这几个文件。
1.log4j.xml
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件。log4j是通过一个.properties的文件作为主配置文件的.
log4j的类图:

- Logger – 日志写出器,供程序员输出日志信息
- Appender – 日志目的地,把格式化好的日志信息输出到指定的地方去
- ConsoleAppender – 目的地为控制台的Appender
- FileAppender – 目的地为文件的Appender
- RollingFileAppender – 目的地为大小受限的文件的Appender,文件大小达到指定尺寸时产生一个新的日志文件,文件名称上会自动添加数字序号。
- DailyRollingFileAppender-每天都产生一个日志文件的Appender
- WriterAppender-将日志信息以流的格式发送到任意指定的地方的Appender
- Layout – 日志格式化器,用来把程序员的日志信息格式化成字符串
- PatternLayout – 用指定的pattern格式化日志的布局
- HTMLLayout -以HTML表格形式格式化日志布局
- SimpleLayout-以包含日志信息的级别和信息字符串格式化日志布局
- TTCCLayout-以包含日志产生的时间、线程、类别等信息的方法格式化日志布局
使用的时候引入一个jar包就可以了。
2.log4j.properties
Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties(key=value)文件,其中properties格式的配置文件最为常用,其有一个固定的文件名log4j.properties,下面我们介绍使用properties文件做为配置文件的方法:
配置示例:
配置根Logger,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, … |
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
3.log4j2.xml
log4j2是log4j的升级版本,两个是同一个作者,只不过前者更加强大。
log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为”.xml”,”.json”或者”.jsn”。
配置文件的格式:log2j配置文件可以是xml格式的,也可以是json格式的。
配置文件的位置:log4j2默认会在classpath目录下寻找log4j2.xml、log4j.json、log4j.jsn等名称的文件。
系统选择配置文件的优先级(从先到后)如下:
(1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的文件.
(2).classpath下的名为log4j2-test.xml的文件.
(3).classpath下名为log4j2.json 或者log4j2.jsn的文件.
(4).classpath下名为log4j2.xml的文件.
我们一般默认使用log4j2.xml进行命名。
其配置需要类似下面这样:
最简单的配置可以参考下面代码:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具