サーバーの日付構成と、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 を使用しているアプリケーションを開始すると、ログに間違ったタイムスタンプが表示されます。どうして????