默认情况下,Logback编码器使用类似于ISO 8601标准的日期格式.但它在日期和时间部分之间缺少"T".这使得解析更容易,并且是标准所要求的(除非私人方达成一致).T
是否有一些技巧可以让Logback包含T?
这个…
2006-10-20T14:06:49,812
Run Code Online (Sandbox Code Playgroud)
而不是这个......
2006-10-20 14:06:49,812
Run Code Online (Sandbox Code Playgroud)
我想我可以在添加"T"时重新创建整个格式,但我想知道是否有更简单的方法.
Sot*_*lis 45
在Logback的JIRA页面上有关于此的错误报告.自那以后没有太多的发展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>
Run Code Online (Sandbox Code Playgroud)
的""需要,使,工作的描述文档.
该<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>
Run Code Online (Sandbox Code Playgroud)
要更加完全符合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}
Run Code Online (Sandbox Code Playgroud)
... ...产生
2014-04-16T09:59:24,009Z
Run Code Online (Sandbox Code Playgroud)
XXXJava 7和8中的工作.在早期版本的Java中,您可以使用Z格式定义中的a来生成缺少冒号的偏移号.
| 归档时间: |
|
| 查看次数: |
16600 次 |
| 最近记录: |