2012-03-11 12 views
61

debugLogと私のreportsLogが別々のもの(追加ではない)になるように私のlog4jを設定する方法がわかりません。それはなぜですか、下の設定では、reportsLogは常に空ですか?1つのlog4j設定ファイルで2つのログファイルを作成するにはどうすればよいですか?

log4j.rootLogger=TRACE, stdout, debugLog 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n 

log4j.appender.debugLog=org.apache.log4j.FileAppender 
log4j.appender.debugLog.File=logs/debug.log 
log4j.appender.debugLog.layout=org.apache.log4j.PatternLayout 
log4j.appender.debugLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n 

log4j.reportsLog=DEBUG,reportsLog 
log4j.appender.reportsLog=org.apache.log4j.FileAppender 
log4j.appender.reportsLog.File=logs/reports.log 
log4j.appender.reportsLog.layout=org.apache.log4j.PatternLayout 
log4j.appender.reportsLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n 

そして、ここに私のJavaコードは次のとおりです。

package test; 

import org.apache.log4j.Logger; 
import org.apache.log4j.PropertyConfigurator; 

public class HelloLogger { 

    static final Logger debugLog = Logger.getLogger("debugLog"); 
    static final Logger resultLog = Logger.getLogger("reportsLog"); 

    public static void main(String[] args) { 
     PropertyConfigurator.configure("log4j.properties"); 
     debugLog.debug("Hello debugLog message"); 
     resultLog.debug("Hello reportsLog message"); 
    } 
} 

答えて

123

次のように構成してみてください。そして、それに応じてJavaコードでロガーを設定

log4j.rootLogger=TRACE, stdout 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n 

log4j.appender.debugLog=org.apache.log4j.FileAppender 
log4j.appender.debugLog.File=logs/debug.log 
log4j.appender.debugLog.layout=org.apache.log4j.PatternLayout 
log4j.appender.debugLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n 

log4j.appender.reportsLog=org.apache.log4j.FileAppender 
log4j.appender.reportsLog.File=logs/reports.log 
log4j.appender.reportsLog.layout=org.apache.log4j.PatternLayout 
log4j.appender.reportsLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n 

log4j.category.debugLogger=TRACE, debugLog 
log4j.additivity.debugLogger=false 

log4j.category.reportsLogger=DEBUG, reportsLog 
log4j.additivity.reportsLogger=false 

を:

static final Logger debugLog = Logger.getLogger("debugLogger"); 
static final Logger resultLog = Logger.getLogger("reportsLogger"); 

あなたは出力を行きたいですか? stdout?そうでない場合にlog4j.propertiesの最初の行を変更します。

log4j.rootLogger=OFF 

stdoutラインを取り除きます。

log4j.rootLogger=TRACE,stdout 
... 
log4j.logger.debugLog=TRACE,debugLog 
log4j.logger.reportsLog=DEBUG,reportsLog 

変更し、ニーズに応じて、各ロガーのログレベル:

+0

ありがとうございました!私は数時間インターネットを磨き、このような例は見つけられませんでした。ありがとう!私はそれを試して、それは完璧に働いた。 – djangofan

+0

良い仕事!しかしadditivtyはadditiv [i] tyです:) – Wei

4

は、それに応じてlog4j.propertiesファイルを変更します。

関連する問題