可以将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);
}