无法为 log4j 控制台附加器配置时区

Couldn't configure timezone for log4j console appender

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

时区设置在 ConversionPattern 的值内。

详情:https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/EnhancedPatternLayout.html

以下是我用于将时间转换为特定时区的 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

这样的偏移量