저희 팀은 지정된 파일 로깅을 사용하는 NetBeans 용 플러그인을 개발 중입니다. 로깅 시스템은 SLF4J + Log4J2를 사용합니다. 내가 알고 있는데 유일한 구성 정보는 플러그인에 대한 로깅 특성을 가진 log4j2.xml
파일이며, 다음log4j2로 자바 로깅을 사용하여 플러그인으로 만든 로그 파일의 수명주기를 올바르게 관리하는 방법
LoggerContext loggerContext = (LoggerContext)LogManager.getContext(false);
loggerContext.reconfigure();
(내가 SLF4J를 사용하고 있습니다 및 넷빈즈 여기 정말 관련이없는 사실.)
내가 가진 질문은, 플러그인 시작시 로깅을 시작하고 플러그인 종료시 로깅을 중지하는 올바른 방법은 무엇입니까?
내가 최대 LoggerContext
보았다 (JVM은. 로그 파일이 자동으로 종료되지 않도록 넷빈즈와 함께가는 계속) 나는 stop()
및 terminate()
방법을 볼 수 있지만 나는 응용 프로그램 LoggerContext
를 사용하는 가정하는 방법에 대한 문서를 찾을 수 없습니다 , 그래서이 LifeCycle
물건이 내부 세부 사항이나 응용 프로그램이 사용하기로되어있는 게 뭔지 모르겠다.
좀 더 구체적인 세부 사항 :
우리의 플러그인 라이프 사이클은 아래 그림과 같이 보입니다은 (하나의 인스턴스 만이 시간에 실행되도록 허용된다). "A"와 "B"는 우리가 원하는 로그 구성을 의미합니다.
[Something starts within the JVM to load log4j classes first.
It might be our plugin, it might be something else.
A log4j's default mechanism kicks in to create log configuration A]
|
| [time passes]
|
| [our plugin starts]
A [log4j classes first loaded,
| default mechanism kicks in to create log configuration A]
A setup log configuration B
A B log event 1
A B log event 2
A B log event 3
A shutdown log configuration B
| [our plugin exits]
|
| [time passes]
|
| [our plugin starts]
A setup log configuration B
A B log event 1
A B log event 2
A B log event 3
A shutdown log configuration B
| [our plugin exits]
|
| [time passes]
|
[JVM exits]
구성 A는 JVM과 연관되어 있으며 log4j가 처음 JVM에서로드 할 때 생성되는 기본 구성입니다.
구성 B는 플러그인에 의해 프로그래밍 방식으로 관리되며 구성 A와 관계없이 명시 적으로 시작/종료해야하며 구성 A는 영향을받지 않아야합니다.
log4j 2.0에서이를 수행 할 수있는 방법이 있습니까?
두 개의 로그 구성을 동시에 활성화 하시겠습니까? 이것이 로그 이벤트 1, 2 및 3 중 A 및 B가 활성화 된 다이어그램입니다 ... –
예. 플러그인이 글로벌 로깅 구성을 방해하지 않도록 (예 : '모든 ERROR 이벤트를 글로벌 로그에 기록') 플러그인이 플러그인 이벤트에 대해 자체 컨텍스트를 설정해야합니다. –