スタンドアロンの Java アプリケーションがあります。アプリケーションはいくつかのライブラリを使用しており、maven と「shade」プラグインによって管理され、すべての依存関係を含む 1 つの大きな jar を作成します。キャッチされていない例外をファイルに記録する際に問題があります (アプリケーションは Linux で実行されます)。log4j.properties を構成し、ローリング ファイル アペンダーを追加しました。動作していますが、例外がスローされるたびに、構成されたログ ファイルではなくコンソールに出力されます。基本的に、すべてのINFO +エントリを含むログファイルで終了していますが、例外はありません(キャッチされていません)。
log4j.properties は次のとおりです。
# Root logger option
log4j.rootLogger=INFO, file
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/my-app.log
log4j.appender.file.MaxFileSize=100MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
私は以下を使用してアプリケーションを実行しています:
java -jar -Dlog4j.configuration=file:log4j.properties myApp.jar
現在、コンソールアペンダーを使用して問題を回避し、次を使用してアプリケーションを実行しています。
java -jar -Dlog4j.configuration=file:log4j.properties myApp.jar >> logs/my-app.log 2>&1
...しかし、私は本当にローリングファイルアペンダーを使いたいと思っています。