나는 다음과 같은 log4j.properties는 파일 한 :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)으로 이동합니까?
stderr이 아닌 stdout이 확실한가요? 후자는 설명하기가 더 쉬울 것입니다. – ruakh
어떻게 log4j 파일을 패키지합니까? JVM을 시작할 때'-Dlog4j.configuration'을 올바른 파일로 설정 했습니까? – CoolBeans
@ruakh 그것은 stderr로 갈 가능성이 있습니다 ... 콘솔로 갈 것이고 이유가 확실하지 않을 수도 있습니다 ... –