デフォルトでは、 Logback エンコーダーは ISO 8601 標準と同様に 日付形式 を使用します。しかし、日付と時刻の中間にある「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
以来、開発はそれほど進んでいません。注目を集めるために投票しました。あなたもすべき。
ISO 8601 に一致する独自の日付形式を提供します。
これでうまくいくはずです:
<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年6月15日):つまり、nottrueであり、タイムゾーンは絶対的なオプションです。
タイムゾーンを含めるには、2番目の引数( ドキュメントを参照 )を%date
に渡します。 タイムゾーンの適切な名前 を渡します。 「EST」などの3文字または4文字のタイムゾーンコードは、一意でも標準でもないので避けてください。たとえば、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
を使用してオフセットを生成できます。コロンがない数。