无法为log4j控制台appender配置时区

时间:2015-07-30 10:58:06

标签: java log4j

我正在尝试配置我的应用程序(使用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.

2 个答案:

答案 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