2013-05-07 4 views
2

Java/Swing 응용 프로그램에서 우리는 System.out 및 System.err을 새 출력이 발생할 때마다 열리는 별도의보기 ("SystemOutView")로 리디렉션했습니다 . 이 예외는 throw 된 예외 및 System.out.println()에 잘 적용됩니다. 이 뷰는 속성 파일을 통해 구성 될 수 있습니다 (즉, 활성화되어 있고 출력시 열리는 지 여부).log4j 1.2.15 및 System.out 및 System.err 리디렉션

이 프로젝트에서 우리는 log4j 1.2.15를 사용하고 있습니다. Log4j 출력이 STDOUT으로 보내 졌음에도 불구하고 SystemOutView가 인스턴스화되기 전에 이미 일부 로깅이 발생하고 System.out 및 System.err이 리디렉션되기 전에 SystemOutView로 리디렉션되지 않는 것으로 나타났습니다. 즉

:

  1. 리디렉션은 System.out 및 System.err에는

이 ... 잘 작동 ("...")

  • someLogger.debug을 SystemOutView 전망 : 로그가 SystemOutView에 나타납니다.

    하지만 :

    1. someLogger.debug ("...")
    2. 리디렉션은 System.out 및 System.err에는
    3. ("...")
    4. someLogger.debug을 SystemOutView하기

    ... 작동하지 않음 : 두 번째 로그 명령문이 첫 번째 것과 같이 STDOUT으로 이동하고 SystemOutView로 리디렉션되지 않습니다.

    SystemOutView를 특성 파일을 통해 구성 할 수 있기 때문에 SystemOutView가 인스턴스화되기 전에 모든 작업이 완료되므로 일부 로그 문이 발행 될 가능성이 큽니다. 따라서 로그 출력을 SystemOutView로 재지 정하는 것은 불가능합니다.

    어떻게해야합니까? 사전
    에서

    많은 고맙습니다 :

  • 답변

    0

    OK -Denis. 나는 혼자서 문제를 해결했다.

    리디렉션 STDOUT 및 STDERR, log4j에이 사용하여 다시 초기화해야합니다 때마다 :

    DOMConfigurator.configure(ConfigFileURL);