将log4j 2添加到我的项目中。起初,我没有添加任何配置/属性文件,并收到消息ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console
。这很好,因为我总是使用默认设置(并且它有效)。
设置完毕后,我注意到log msgs时间戳不包含日期。例如:10:46:24.597 [[STANDBY] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO utils.ServerParamLoader - INFO LOG
。所以我开始挖掘网络以寻求答案。
在log4jtester.com的帮助下,我制作了一个小的log4j2.properties文件:
log4j.rootLogger=INFO, STDOUT
#appenders
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Target=System.out
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%d{dd/MM/yyyy HH:mm:ss,SSS}] [%-7p] %c{1}:%L (%t) - %m%n
我把它放在/ src下。
当我再次启动服务器时,错误消息消失了(这就是为什么我确定文件正在加载!),但是日志中的消息仍然是旧格式。
我做错了什么?
(另一件事,也许它可能不相关 - 根据API时间戳的默认值是ISO8601,其中包括日期!)
答案 0 :(得分:2)
问题中显示的配置文件采用旧的Log4j 1格式。它被命名为log4j2.properties,因此Log4j2将尝试解析它,但我怀疑发生了错误并且您最终得到了无效的配置......
有关Log4j2中example of the properties format的配置,请参阅Log4j2手册页。
本手册中的大多数示例都使用xml格式。因此,开始使用xml配置文件可能更容易。
console appender的log4j2.xml
配置为:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{dd/MM/yyyy HH:mm:ss,SSS}] [%-7p] %c{1}:%L (%t) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>