指定 log4j 日期的时区

2022-09-03 17:27:55

是否可以指定 log4j 将使用的时区?我需要日志文件中的日期与应用程序的时区不同。log4j的用途 .不幸的是,似乎没有办法通过模式字符串(有方法,但这无济于事)来控制 时区。PatternLayoutSimpleDateFormatSimpleDateFormatDateFormatsetTimeZone

我查看了log4j的源代码,并被灌输了。不幸的是,没有一个简单的方法来掌握设置时区。SimpleDateFormatPatternParser.finalizeConverterDateFormat


答案 1

如果在类路径上使用 Log4J 附加 JAR 文件,则增强型布局类支持此配置选项。请参阅此链接中的 Javadoc。它作为 %d 模式组件的一部分进行处理,如下所示:

log4j.appender.stdout.layout.ConversionPattern=%d{}{America/New_York} %p [%c] - %m%n

您可以在此处下载附加包。


答案 2

我的案例...必须将模式布局更改为增强型布局。(log4j-1.2.17.jar)

log4j.appender.logfile.layout=org.apache.log4j.EnhancedPatternLayout log4j.appender.logfile.layout.ConversionPattern=[%d{ISO8601}{GMT+9}]%-5p - %m%n