java - 使 Logback 在其 "T"格式中包含日期和时间之间的 "%date"以严格遵守 ISO 8601

标签 java logback

默认情况下,Logback编码器使用 date format类似于 ISO 8601标准。但它在日期和时间部分之间缺少“T”。 T 使解析更容易,并且是标准要求的(除非私有(private)各方另有约定)。

让 Logback 包含 T 有什么技巧吗?

这……

2006-10-20T14:06:49,812

而不是这个……

2006-10-20 14:06:49,812

我想我可以在添加“T”的同时重新创建整个格式,但我想知道是否有更简单的方法。

最佳答案

错误报告

Logback's JIRA page 上有一个关于此的错误报告。 .自从 24/Feb/10 3:57 PM 以来没有太大的发展.我刚刚投票是为了引起注意。你也应该这样做。

我会提供我自己的与 ISO 8601 匹配的日期格式的。

插入“T”

这应该可以解决问题:

<pattern>%d{"yyyy-MM-dd'T'HH:mm:ss,SSS"} [%thread] %-5level %logger{35} - %msg %n
</pattern>

""需要制作 ,按照 documentation 中的描述工作.

那个 <pattern>元素属于您的 Logback 配置设置。这是一个示例logback.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <!-- Strangely, Logback lacks a built-in formatter for ISO 8601. So, roll our own.  -->
            <Pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC} [%thread] %-5level %logger{36} - %msg%n</Pattern>
        </layout>
    </appender>

    <logger name="com.example" level="TRACE"/>


    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

时区

为了更全面地符合 ISO 8601 标准并获得更有帮助的日志记录,您应该包含一个时区。

编辑(Michael-O,2014-06-15):那不是正确的,时区是绝对可选的。

要包含时区,请将第二个参数 (see doc) 传递给 %date .通过proper name of a time zone .避免使用三个或四个字母的时区代码,例如“EST”,因为它们既不唯一也不标准化。例如,通过 Australia/Perth .通常对于我们想要的日志记录 UTC (GMT) 时间,意思是没有任何偏移。在这种情况下,通过 UTC .

您可以在日志中将时区偏移显示为小时数和分钟数,作为日期时间的一部分。附加 X将时区偏移量显示为日期时间值的一部分。

这……

%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC}

…产生…

2014-04-16T09:59:24,009Z

XXX在 Java 7 和 8 中工作。在早期版本的 Java 中,您可以使用 Z在格式定义中生成一个缺少冒号的偏移量。

关于java - 使 Logback 在其 "T"格式中包含日期和时间之间的 "%date"以严格遵守 ISO 8601,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096129/

相关文章:

java - 如何使用 Eclipse 创建非 fragment Android 应用程序?

Java 8 ZoneOffset - 如何获取当前系统 UTC 偏移量

java - logback FileAppender -> AsyncAppender 刷新信号

java - Logback:记录器功能不在控制台中打印消息。

java - 使用 Logback 但 Log4j 开始显示 WARN no Appenders

java - 聊天客户端的验收测试

java - 在 Amazon SQS 队列中,我们对不同组 ID 的数量有限制吗?

java - 当一个线程访问一个方法时,如何防止其他线程访问该方法?

Logback.xml 配置

java - Logback 滚动文件附加程序 - 我可以将多个日志压缩到一个文件中吗?