Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java log4j:时区格式_Java_Timezone_Log4j - Fatal编程技术网

Java log4j:时区格式

Java log4j:时区格式,java,timezone,log4j,Java,Timezone,Log4j,我想将log4j消息中的时区信息格式化为 +hh:mm这样一个完整的时间戳如下所示: 2013-09-05T09:32:10.703+02:00 我知道日期格式说明符Z,但是输出格式是+hhmm,而不是+hh:mm。所以冒号丢失了: 2013-09-10T15:55:34.123+0200 有什么办法可以得到我想要的吗?使用以下模式: yyyy-MM-dd'T'HH:mm:ss.SSSXXX 在的javadoc中,您可以阅读(对于X字母): ISO 8601时区:模式字母的数量指定格式化和

我想将log4j消息中的时区信息格式化为
+hh:mm
这样一个完整的时间戳如下所示:

2013-09-05T09:32:10.703+02:00
我知道日期格式说明符
Z
,但是输出格式是
+hhmm
,而不是
+hh:mm
。所以冒号丢失了:

2013-09-10T15:55:34.123+0200

有什么办法可以得到我想要的吗?

使用以下模式:

yyyy-MM-dd'T'HH:mm:ss.SSSXXX
在的javadoc中,您可以阅读(对于
X
字母):

ISO 8601时区:模式字母的数量指定格式化和解析的格式,如下所示:

<!-- console -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    <param name="threshold" value="TRACE" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="conversionPattern"
            value="%d{yyyy-MM-dd'T'hh:mm:ss.SSSXXX} %-5p (%c.java:%L).%M - %m%n" />
    </layout>
</appender>
2013-09-12T08:08:18.532-05:00 INFO  (Main.java:8).main - Test
e、 g


如果您的配置文件是
log4j.xml
,则可以如下所示:

<!-- console -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    <param name="threshold" value="TRACE" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="conversionPattern"
            value="%d{yyyy-MM-dd'T'hh:mm:ss.SSSXXX} %-5p (%c.java:%L).%M - %m%n" />
    </layout>
</appender>
2013-09-12T08:08:18.532-05:00 INFO  (Main.java:8).main - Test
结果如下:

<!-- console -->
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    <param name="threshold" value="TRACE" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="conversionPattern"
            value="%d{yyyy-MM-dd'T'hh:mm:ss.SSSXXX} %-5p (%c.java:%L).%M - %m%n" />
    </layout>
</appender>
2013-09-12T08:08:18.532-05:00 INFO  (Main.java:8).main - Test

我正在使用带有logback-classic-1.2.3.jar的PatternLayout,下面的日期模式为我提供了悉尼时区,您需要根据GMT进行更新

"timestamp":"%d{yyyy-MM-dd HH:mm:ss, GMT+10}"

上传您的log4j.xml或log4j.properties感谢您的快速回答。我刚刚发现了一个网页,它记录了1.4.2版的SimpleDataFormat,其中的“X”还不受支持。不幸的是,我们使用的是Java 6,而且还不支持“X”。嗨,保罗,yyyy-MM-dd'hh:MM:ss.SSSXXX使用UTC时区吗?嗨,@SumalathaAbhishek-Nope。这只是格式。嗨@PaulVargas,你写的时候我用了XXX。在windows环境中,我根据需要获取带有“+00:03”的日期。但在linux环境中,我得到了一些奇怪的东西。在时间结束时,我得到了“Z”,没有“+00:03”。知道为什么吗?