私は、次のlog4j.propertiesファイルがあります:私のJavaプログラムでlog4jがstdoutに出力されるのはなぜですか?
log4j.rootLogger=DEBUG,A1,A2,A3
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.File=log.out
log4j.appender.A1.MaxFileSize=100KB
log4j.appender.A1.MaxBackupIndex=1
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%p %d %t %c - %m%n
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.Threshold=WARN
log4j.appender.A2.File=warnings.out
log4j.appender.A2.MaxFileSize=100KB
log4j.appender.A2.MaxBackupIndex=1
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%p %d %t %c - %m%n
log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.Threshold=ERROR
log4j.appender.A3.File=errors.out
log4j.appender.A3.MaxFileSize=100KB
log4j.appender.A3.MaxBackupIndex=1
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%p %d %t %c - %m%n
を、私は定義された次の変数があります:私はロガーのメソッドを呼び出すとき
private Logger logger = Logger.getRootLogger();
static {
URL url = MyClass.class.getClassLoader().getResource("/log4j.properties");
if (url == null) {
// log4j.properties not found in CLASSPATH, revert to console output
BasicConfigurator.configure();
}
else {
// log4j.properties found
PropertyConfigurator.configure(url);
}
}
をなぜそれが出力も、あります3つの出力ファイルに加えて、コンソール(stdout)に行きますか?
stdoutではなくstdoutになると確信していますか?後者は説明しやすくなります。 – ruakh
どのようにlog4jファイルをパッケージ化していますか? JVMを起動するときに '-Dlog4j.configuration'が正しいファイルに設定されていますか? – CoolBeans
@ruakhそれはstderrに行く可能性があります...それはコンソールに行くとどちらかの理由はわかりません... –