2

サーバーの日付構成と、ubuntu 10.04 で log4j と solr を実行している Java に問題があります。

システム時刻は CEST です。日付コマンド出力:

# date
Di 31. Jul 14:05:02 CEST 2012

しかし、log4j を使用したアプリケーション ログのログの時間は次のとおりです。

2012-07-31 12:05:02

log4j.properties ファイルで次の行を使用します。

log4j.appender.rollingFile.layout.ConversionPattern=%d{ISO8601} %p %t %c - %m%n

ここで、基本的に 2 行のコードを含む時間をテストするための jar を作成します。

Date date = new Date(System.currentTimeMillis());
System.out.println(DateFormat.getDateTimeInstance().format(date));

これにより、予想される間違った出力が得られます。

# java -jar javaDate.jar
31.07.2012 12:05:02

タイムゾーンに仮想マシン パラメータを使用すると、正常に動作します

java -Duser.timezone=Europe/Berlin -jar javaDate.jar 
31.07.2012 14:05:02

しかし、同じパラメーターを使用して log4j を使用しているアプリケーションを開始すると、ログに間違ったタイムスタンプが表示されます。どうして????

4

1 に答える 1

2

最新バージョンの log4j を使用している場合は、以下を追加すると EnhancedPatternLayout を使用できるはずです。

log4j.appender.rollingFile.layout=org.apache.log4j.EnhancedPatternLayout

あなたの設定に

%d{ISO8601}{Europe/Berlin}

あなたのレイアウトで。

于 2012-07-31T12:41:18.407 に答える