小编典典

使Logback以“%date”格式在日期和时间之间包括“ T”,以严格遵守ISO 8601

java

默认情况下,Logback编码器使用类似于ISO
8601
标准的日期格式。但是它在日期和时间部分之间的中间缺少“
T”。该标记使解析更加容易,并且是标准所必需的(除非私有方另行同意)。T

是否有一些技巧可以 使Logback包括在内T

这个…

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

代替这个

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

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


阅读 1439

收藏
2020-12-03

共1个答案

小编典典

错误报告

Logback的JIRA页面上有关于此问题的错误报告。从那以后没有太大的发展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>

""需要,使,工作的描述文档

<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):事实 并非 如此,时区是绝对可选的。

要包含时区,请向传递第二个参数(请参阅doc%date。传递时区专有名称。避免使用三个或四个字母的时区代码,例如“
EST”,因为它们既不是唯一的也不是标准化的。例如,通过Australia/Perth。通常,对于日志记录,我们需要UTC(GMT)时间,这意味着没有任何偏移。在这种情况下,请通过UTC

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

这个…

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

…产生…

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

XXXJava中7和8的作品在早期版本的Java,您可以使用Z格式定义中产生的偏移数量缺乏一个冒号。

2020-12-03