Log4j FileAppender以编程方式使用其他时区

时间:2018-11-13 00:06:08

标签: java log4j

可以将org.apache.log4j.FileAppender设置为与应用程序正在运行的时区不同的时区吗?需要明确的是,我并不是在为打印到日志的内容添加时区,而是要使时间戳本身 成为其他时区。

例如,我们使用Wildfly作为我们的应用程序服务器,server.log中的所有内容都会在本地时间显示。很好。

但是,当我们的应用程序启动时,我们会java.util.setDefault(TimeZonze.getTimeZone("UTC"));这样做,以便可以存储所有客户端上的所有嵌入式设备,并可以从公共时间参考中将它们相互比较。

这意味着以后我们通过编程方式设置FileAppender来将内容记录到几个不同的动态命名的日志文件时,它们的时间戳以UTC打印。但是我们希望从FileAppender生成的那些日志也可以在本地时间打印

有没有办法做到这一点?

下面是我们设置FileAppender的方法:

public void addFileAppender(String someDynamicName) {
    FileAppender appender = new FileAppender();
    appender.setName(someDynamicName);
    appender.setFile(getLogDir().getPath() + "/" + someDynamicName + ".log");
    appender.setLayout(new PatternLayout("%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %m%n"));
    appender.setThreshold(org.apache.log4j.Level.DEBUG);
    appender.setAppend(true);
    appender.activateOptions();
    Logger.getLogger(someDynamicName).addAppender(appender);
}

0 个答案:

没有答案