2017-11-20 11 views
1

私はlog4j.xml設定ファイルを持っています。環境変数が変わるとログレベルを変更したい。私はDEVELOP、TEST、PREPRODなどの複数の環境を持っています。どうすればこのことができますか?log4jの設定ファイル内の環境に応じてloggerレベルを変更するにはどうすればよいですか?

はDEVELOP:

<Loggers> 
    <Root level="debug"> 
     <AppenderRef ref="Console"/> 
    </Root> 
</Loggers> 

TESTを:

<Loggers> 
    <Root level="error"> 
     <AppenderRef ref="Console"/> 
    </Root> 
</Loggers> 

答えて

0

私は、各設定のために、独自のログレベルを持つものをいくつかのアペンダを作成すると言うでしょう。次に実行時に取得するものを決定し、それに応じてロガーをフェッチします。例えば

log4j.rootLogger=WARN 
log4j.com.yourcompany.package1= DEBUG, appender1, stdout 
log4j.com.yourcompany.package2= INFO, appender2, stdout 

そしてファイルのappender12を定義します。 2つのアペンダーに同じ出力ファイルを入力することができます。 Javaでロガーを作成する場合、次の2つから選択できます。

final Logger log = Logger.getLogger(package1.Class1.class); 
// final Logger log = Logger.getLogger(package2.Class2.class); 

私はそれをテストしていないが、私はそれがうまくいくと思います。私はlog4j.xmlの定義でパッケージ名の代わりにクラス名を使うこともできると信じています。

1

私は同じような状況に入って来て、私は以下でした、

は環境として接尾辞で別ののlog4j構成にを持っています。あなたのロガーファクトリクラスでマイナスDオプションで

log4j-<ENVIRONMENT>.xml 

は、環境に合格し、正しいファイルを選択

String log4jFile = "/log4j-" + System.getProperty("ENVIRONMENT") + ".xml"; 
String url = LoggerFactory.class.getResource(log4jFile); 
org.apache.log4j.xml.DOMConfigurator.configure(url); 
関連する問題