我正在尝试配置我的应用程序(使用log4j作为日志记录机制)以UTC-08:00
时间记录消息,但是当log4j初始化并且系统时间继续记录消息时它会抛出错误。我不确定参数TimeZone
是否不适用于布局PatterLayout
。谁能帮助我弄清楚我在这里做错了什么?
Log4J配置:
<appender name="CustomAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM:dd:yyyy HH:mm:ss} %m%n" />
<param name="TimeZone" value="UTC-08:00" />
</layout>
</appender>
<root>
<priority value="debug" />
<appender-ref ref="CustomAppender" />
</root>
初始化log4j时显示的警告消息是
log4j:WARN No such property [timeZone] in org.apache.log4j.PatternLayout.
答案 0 :(得分:1)
时区设置在ConversionPattern的值内。
详细信息:https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/EnhancedPatternLayout.html
答案 1 :(得分:0)
以下是我用于将时间转换为特定时区的log4j配置。我已添加此答案以供将来参考。
Log4J配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CustomAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="%d{DATE}{IST} IST %-5p [%t] %c: %m%n"/>
</layout>
</appender>
<root>
<priority value="debug" />
<appender-ref ref="CustomAppender" />
</root>
</log4j:configuration>
上面转换模式中的字符串{IST}
会将时间转换为印度标准时间,而另一个字符串IST
将添加到记录器消息中(这是可选的)。
您可以在转化模式中使用任何有效的ISO-8601
时区 - 指定时区(如IST
)或偏移量UTC+05:30