侧边栏壁纸
博主头像
皮皮Blog博主等级

分享互联网上的宝藏网站

  • 累计撰写 17 篇文章
  • 累计创建 58 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

记录解决log4j2使用properties属性配置文件不生效的问题

皮皮Blog
2022-12-30 / 1 评论 / 0 点赞 / 2,070 阅读 / 1,303 字 / 正在检测是否收录...

工作中使用slf4j + log4j2 搭建了一个项目,log4j2 是使用的属性文件的方式来配置日志信息,但是项目运行后,未按照设想输出log日志。

具体的包名:使用slf4j(1.7.32,门面日志) + log4j2(2.17.2 具体日志)+ log4j-slf4j-impl(2.17.2 桥接器)配置

原因非常简单,log4j2 2.0版本后 跟 log4j 1 的属性配置文件参数已经发生改变。
我的文件中全部是是使用log4j. 开头约定的参数,所以在log4j2 项目中无效。
最后换成log4j2 对应的参数,就可以打印日志了。

这是log4j1版本对应的属性文件参数

### set log levels ###
log4j.rootLogger = debug , stdout , D, E

###  output to the console ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold = DEBUG 
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss,SSS}[%F][%t] [%c{1}]-[%-p] %m%n

这个log4j2 对应的属性文件参数

#log4j2 自身的打印级别
status = ERROR
#log4j2 默认读取配置文件的时间,可以保证修改配置文件后不能重新启动项目,单位s 最小5s
monitorInterval = 30

#配置 全局的logger打印级别
rootLogger.level = debug
rootLogger.appenderRef.stdout.ref = console

#配置日志输出到什么地方,控制台,文件等
appender.console.name = console
appender.console.type = Console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.console.filter.threshold.type = ThresholdFilter
appender.console.filter.threshold.level = info

因为log4j2一开始的版本并不支持属性文件的方式配置参数,是后续版本又新增的一种,所以查询的时候网上信息不多,而且有非常多的错误,最常见的错误就是标题写着的是log4j2配置文件,但是里面的属性都是log4j1的,踩了很多坑,建议log4j2直接使用.xml方式进行配置,方便快捷。

另外特别强调下:log4j2 2.14.1 及以下版本有安全漏洞,不建议使用了。

0

评论区