如何在log4j2中将日志时间戳转换为特定时区?

时间:2018-09-26 12:45:41

标签: java logging log4j2

我在应用程序中使用log4j2进行日志记录,并将该应用程序部署在伦敦,东京,纽约等地运行的服务器中。

我稍后汇总日志以进行分析。为了使其统一,我想将日志的时间戳转换为单个时区,例如GMT或EST。如何在log4j2中做到这一点?

<Appenders>
    <RollingRandomAccessFile name="RandomAccessFileOutput" fileName="${sys:host.log}" 
        filePattern="${sys:host.log}.%d{yyyy-MM-dd-hh-mm-ss}.gz">
        <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n"/>
        <Policies>
            <SizeBasedTriggeringPolicy size="10 MB"/>
            <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
        </Policies>
    </RollingRandomAccessFile>
    <File name="File" fileName="console.log" append="false" >
        <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n"/>
    </File>
    <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n"/>
    </Console>

</Appenders>

1 个答案:

答案 0 :(得分:2)

根据the Log4j 2 manual,您可以在模式中指定时区。例如:

%d{yyyy-MM-dd HH:mm:ss}{GMT+0}

将格式化“ GMT + 0”时区中的日期。 java.util.TimeZone.getTimeZone(String)可以理解,第二对(可选)大括号中的字符串是标准时区ID。