有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java log4j2:日期/转换模式不起作用

在我的项目中添加了log4j2。起初,我没有添加任何配置/属性文件,而是得到了消息ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console。这很好,因为我还是使用了默认设置(而且很有效)

设置完之后,我注意到日志msgs时间戳不包含日期。例如:10:46:24.597 [[STANDBY] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'] INFO utils.ServerParamLoader - INFO LOG。所以我开始在网上寻找答案

log4jtester.com的帮助下,我做了一个小log4j2。属性文件:

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,其中包括日期!)


共 (1) 个答案

  1. # 1 楼答案

    问题中显示的配置文件是旧的Log4j 1格式。它被命名为log4j2。属性,所以Log4j2将尝试解析它,但我怀疑发生了错误,您最终得到了无效的配置

    有关Log4j2中的example of the properties format的配置,请参阅Log4j2手册页面

    手册中的大多数示例都使用xml格式。因此,从xml配置文件开始可能更容易

    a console appenderlog4j2.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>