首页 > 解决方案 > WildFly:设置日志的时区

问题描述

在我的 JEE 应用程序的 EAR 文件中,我有一个 log4j.xml 来定义该应用程序的日志记录。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="${jboss.server.log.dir}/licenseservice.log" />
        <param name="append" value="true" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] [%c:%L] - %m%n" />
        </layout>
    </appender>
    
    <root>
        <priority value="trace" />
        <appender-ref ref="fileAppender" />
    </root>
</log4j:configuration>

该文件中还有一些条目,但它们暂时忽略了。我想要做的是将记录时间的时区更改为 UTC。在某处我读到你可以通过改变这样的模式来做到这一点(如果你想拥有德国的时区):

%d{yyyy-MM-dd HH:mm:ss}{Europe/Berlin} [%-5p] [%c:%L] - %m%n

所以我的想法是以下行应该给我UTC时间:

%d{yyyy-MM-dd HH:mm:ss}{UTC} [%-5p] [%c:%L] - %m%n

但最终这两个值都不起作用。

有什么想法吗?

标签: loggingjbosswildflyjboss7.xwildfly-15

解决方案


好的,我发现了我的问题。

仅仅改变模式并不能解决问题。您还必须更改解析模式的类

<layout class="org.apache.log4j.PatternLayout">

<layout class="org.apache.log4j.EnhancedPatternLayout">

之后你会得到一条线

2020-07-08 12:23:42 [INFO ] [<canonical-class-name>:<source-code-line] - <message>

其中日期和时间为 UTC(在我的情况下,本地日期时间为2020-07-08 14:23:42.


推荐阅读