默认情况下,Logback编码器使用类似于ISO 8601标准的日期格式。但是它在日期和时间部分之间的中间缺少“ T”。该标记使解析更加容易,并且是标准所必需的(除非私有方另行同意)。T
T
是否有一些技巧可以 使Logback包括在内T?
这个…
2006-10-20T14:06:49,812
代替这个
2006-10-20 14:06:49,812
我想我可以在添加“ T”的同时重新创建整个格式,但是我想知道是否有一些更简单的方法。
Logback的JIRA页面上有关于此问题的错误报告。从那以后没有太大的发展24/Feb/10 3:57 PM。我刚刚投票以引起注意。你也应该
24/Feb/10 3:57 PM
我将提供与ISO 8601匹配的日期格式。
这应该可以解决问题:
<pattern>%d{"yyyy-MM-dd'T'HH:mm:ss,SSS"} [%thread] %-5level %logger{35} - %msg %n </pattern>
的""需要,使,工作的描述文档。
""
,
该<pattern>元素属于您的Logback配置设置。这是一个示例logback.xml文件:
<pattern>
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。
%date
Australia/Perth
UTC
您可以在日志中将时区偏移量显示为日期和时间的小时数和分钟数。附加一个X以将时区偏移显示为日期时间值的一部分。
X
%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC}
…产生…
2014-04-16T09:59:24,009Z
在XXXJava中7和8的作品在早期版本的Java,您可以使用Z格式定义中产生的偏移数量缺乏一个冒号。
XXX
Z