2012-02-02 42 views
8

ログに特定のタイムゾーンの日付エントリが含まれていなければなりません。 log4j.propertiesにタイムゾーンを強制する方法はありますか?Apache Log4j特定のタイムゾーンでのログ

私はすでにJDK 1.5を使用しています.JDK 1.5ではタイムゾーンのバグがあり、JDK 1.5では削除されています。 JDK 1.5の場合、デフォルトで "GMT"タイムゾーンが表示されます。 Log4jで私の特定のタイムゾーンを設定したい。

+1

は、どのようにそれが今見てないとどのようにそれが見えるようにしたいですか、具体的に? – tartak

+0

@CatalinCiobanu今はっきりしていますか? –

答えて

0

org.apache.log4j.helpers.DateLayoutをレイアウトクラスとして使用し、その中にプロパティtimeZoneを使用します。

0

ConversionPatternにはdate引数を含めます。ローカルタイムゾーンでのロギングイベントの日付を出力するために使用

からPatternLayout documentation:

日付から。 世界標準時で日付を出力するには、%utcdateパターンを使用します。 日付変換指定子のあとに、中括弧で囲んだ日付書式指定子 が続きます。たとえば、%date{HH:mm:ss,fff}または%date{dd MMM yyyy HH:mm:ss,fff}です。日付書式指定子が指定されていない場合は、 というISO8601形式が仮定されます(Iso8601DateFormatter)。

日付書式指定子は、時刻パターン の文字列ToStringと同じ構文を使用できます。

より良い結果を得るには、log4netの日付 フォーマッタを使用することをお勧めします。これらは、 AbsoluteTimeDateFormatter,DateTimeDateFormatter、それぞれ Iso8601DateFormatterを指定する文字列 "ABSOLUTE"、 "DATE"および "ISO8601"のいずれかを使用して指定できます。たとえば、%date{ISO8601}または%date{ABSOLUTE}です。

これらの専用日付フォーマッタは、 ToStringよりも大幅に優れています。 (

%d{yyyy-MM-dd/HH:mm:ss.SSS/zzz} 

トリックは、java.text.SimpleDateFormatのJavadocに応じているので、パターンの「ZZZ」を含めることです。

+2

これは.netに当てはまるようですが、Javaには当てはまらないか、少なくとも私は見出しを見つけることができません。私はまだ見ています。 –

16

これは、あなたのログの各行にタイムゾーンの情報を見ることができるようになりますhttp://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html)、それはタイムゾーンのコードです。 Log4JはSimpleDateFormatと同じ規則を使用します。

詳細は、Log4JのJavadocの中の上にあります。

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

「変換文字は」文字「D」であるテーブルの行を探します。

+0

それはいつも私に私の特定のタイムゾーンがほしい理由、なぜGMTをjdk 1.5で与えるのでしょうか –

+0

ああ。ごめんなさい。その場合、あなたの解決策があります( "extras" jarが必要です):http://stackoverflow.com/questions/1785725/specify-time-zone-of-log4js-date –

+0

'PatternLayout'のjavadocの重要な部分を引用しています:標準のJDKの一部ですが、SimpleDateFormatのパフォーマンスはかなり劣ります。 より良い結果を得るには、log4jの日付フォーマッタを使用することをお勧めします。これらは、AbsoluteTimeDateFormat、DateTimeDateFormatおよびそれぞれISO8601DateFormatを指定するための文字列 "ABSOLUTE"、 "DATE"、 "ISO8601"のいずれかを使用して指定できます。たとえば、%d {ISO8601}や%d {ABSOLUTE}のように指定します。 –

4

最も良い方法は、Apache Extras™ for Apache log4j™ を使用し、通常のPatternLayoutをorg.apache.log4jで置き換えることです。そして、あなたはGMT形式で日付を表示するConversionPatternではなく%dの%dの{ISO8601} {GMT}を使用することができます

//log4j.appender.xxx.layout = org.apache.log4j.PatternLayout 
//Replaced by 
log4j.appender.xxx.layout = org.apache.log4j.EnhancedPatternLayout 

:EnhancedPatternLayoutは、プロパティファイルを使用した場合は次の操作を行います。任意のタイムゾーンを指定することができます。次の行を追加することができます代わりにGMT

1

log4j.appender.S.layout.ConversionPattern= %d{yyyy-MM-dd HH:mm:ss zzz}{GMT} %-5p [%t][%c:%M(%L)] %m%n 
関連する問題