【问题标题】:log4j2: date/conversion pattern does not worklog4j2:日期/转换模式不起作用
【发布时间】:2017-01-01 08:58:27
【问题描述】:

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

设置完之后,我注意到日志消息时间戳不包含日期。例如: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,其中包括日期!)

【问题讨论】:

    标签: java date logging log4j2


    【解决方案1】:

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

    请参阅 Log4j2 手册页,了解 Log4j2 中 example of the properties format 的配置。

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

    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>
    

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 2018-02-23
      • 2021-09-10
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 2017-07-31
      相关资源
      最近更新 更多