在我的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
但最终这两种价值观都不起作用。
对此有什么想法吗?
好的,我发现了我的问题。
仅仅改变模式是行不通的。您还必须更改从解析模式的类
<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
.