2010-11-19 5 views
1

Java WebStart 응용 프로그램에는 log4j 구성 파일이 없습니다. 그것은 단순히 하드 코드 된 로거와 애펜더를 설정합니다.Java Web Start로 log4j 구성

개별 클라이언트가 log4j.properties 파일을 어딘가에 놓고 문제 해결 상황에서 고유 한 사용자 정의 로깅을 설정할 수 있기를 바랍니다. log4j.properties 파일을 어플 리케이션의 jar 파일 중 하나에 번들로 묶어서 구성 할 수는 있지만 문제를 해결하려는 클라이언트에만 영향을주는 대신 각 클라이언트에 대해 구성이 동일하게됩니다. 또한 설정을 즉시 변경할 수 없습니다.

클라이언트 당 구성 파일을 사용하기 위해 log4j initialization procedure을 납치하는 방법이 있습니까?

답변

3

여기에서 기본적인 문제는 Java Web Start가 시스템에 대한 액세스를 심각하게 제한한다는 것입니다.

서명 된 응용 프로그램을 실행하고 사용자가 컴퓨터에 대한 전체 액세스를 허용하는 경우이 작업을 수행 할 수 있어야합니다. 그렇지 않은 경우, 기본 메커니즘을 사용하여 log4j를 사용하여이 작업을 수행 할 수 없습니다.

Java WebStart API를 사용하여 파일 시스템에서 읽은 다음, log4j로 피드하는 독자적인 구성기를 작성할 수 있지만 일부 팔꿈치 그리이스가 필요할 것입니다.

+0

컴퓨터에 대한 전체 액세스 권한이 있습니다. 희망 새 컴퓨터를 작성하고 업그레이드 할 필요없이 이미 배포 된 일부 컴퓨터에서이 작업을 수행 할 수 있기를 원하기 때문에 직접 작성자를 작성할 필요가 없습니다. – skiphoppy

+0

시스템에 대한 전체 액세스 권한이 있고 검증되지 않은 경우 jnlp-file의 log4j.configuration 시스템 등록 정보를 설정하십시오. 자세한 내용은 http://logging.apache.org/log4j/1.2/manual.html - "기본 초기화 절차"절을 참조하십시오. –

1

PersistenceService을 사용하여 로컬 사용자 컴퓨터에 log4j 구성을 저장할 수 있습니다 (서명없이 작동 함). 또는 웹 시작 응용 프로그램을 시작할 때 특수 구성을로드할지 여부를 플래그로 저장할 수 있습니다.

최종 사용자가 로깅 기능을 즉시 재구성하기 위해 로컬 log4j.xml 파일을 열 수있는 FileOpenService도 있습니다. 그렇게하면 사용자가 구성을 제어 할 수 있으며 언제 어디서 적용할지 제어 할 수 있습니다.

FileOpenService를 사용하여 log4j 구성 파일로 스트림을 가져 오는 응용 프로그램 코드는 DOMConfigurator.configure (InputStream)를 사용하여 log4j를 다시 구성 할 수 있습니다.