Log4jはシステム環境変数を読み取ります



Log4j Read System Environment Variables



最近、プロジェクトはlog4jを使用してログに記録する必要があります。 log4fj.properties構成ファイルのフラグメントは次のとおりです。

### log file ### log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender log4j.appender.debug.File=${PIF_CONF}/logs/retrofit.log log4j.appender.debug.Append=true log4j.appender.debug.Threshold=INFO log4j.appender.debug.layout=org.apache.log4j.PatternLayout log4j.appender.debug.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%p]-[%c] %m%n

$ {PIF_CONF}は/ etc / profileファイルで構成されていますが、数回テストされており、まったく有効になっていません。ユーザーの解決策によると、それは解決されていません。



そこで、log4jのソースコードorg.apache.log4j.helpers.OptionConverter.javaを調べることにしました。そして、log4jがSystem.getProperty()を使用して環境変数を読み取ることがわかりました。テストプログラムを通じて、System.getProperty( 'PIF_CONF')がnullであることがわかりました(System)。 .getenv( 'PIF_CONF')は、PIF_CONFの内容を取得します。

したがって、Springコンテキストが初期化されたら、System.getenv( 'PIF_CONF')+ System.setProperty( 'PIF_CONF'、 'XXXX')を使用してPIF_CONFをpropsに設定します。このようにして、log4jはログパスを読み取ることができます。