2017-11-16 6 views
1

콘솔 출력이 스윙 콘솔로 리디렉션되었습니다. 코드에 sysout을 추가하면 해당 텍스트가 스윙 구성 요소에 나타납니다. 이제 log4j 콘솔 출력이이 스윙 구성 요소에도 나타날 것이라고 생각했습니다. 그러나 모든 log.info() 메시지는 계속해서 Eclipse 콘솔에 나타납니다. 스윙 구성 요소로 메시지를 리디렉션하는 내 Handler를 디버깅 할 때 로거의 메시지가 지나가는 것을 볼 수 있습니다. 그러나 Sysout 메시지가 있습니다.스윙 콘솔, log4j 콘텐츠로 리디렉션 된 sysout

아무도 나에게 여기에 잘못 될 수있는 힌트를 줄 수 있습니까? 동시에 두 개의 콘솔을 사용할 수 있습니까?

여기 log4j에 대한 내 설정이다 :

log4j.rootLogger=INFO, stdout, file 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %C{1} - %m%n 
log4j.appender.stdout.filter.filtro=org.apache.log4j.varia.LevelRangeFilter 
log4j.appender.stdout.filter.filtro.levelMin=ALL 
log4j.appender.stdout.filter.filtro.levelMax=FATAL 

답변

0

이 솔루션은 매우 간단하지만 추적하기 어려웠다. 콘솔 구성 요소가있는 GUI 클래스에서 로거를 사용했습니다. 로거가 스윙 콘솔로 리디렉션 된 코드가 실행되기 전에 로거가 초기화 된 것 같습니다. Logger가 이미 설정되어 있으므로이 코드를 실행하면 그대로 유지됩니다.

로거를 GUI 클래스에서 제거하면 모든 것이 잘 동작합니다.