2012-03-12 4 views
0

많은 작업자 스레드를 사용하여 내용을 처리하는 응용 프로그램을 만들고 있습니다. 이 스레드는 각각 특정 이름 지정 규칙에 따라 자체 로그 파일에 기록해야하는데 주로 생성시 각 스레드가 전달되는 하나의 문자열 값에 따라 달라집니다.Log4J 사용자 정의 로거 (스레드 로깅)

log4j에서 컴파일 할 때 log4j 구성에 가능한 모든 appenders를 쓰지 않는 방법이 없습니다. 이것은 내 응용 프로그램에 거의 허용되지 않습니다. 프로젝트에는 이미 다시 작성하지 않으려는 Logger 객체에 대한 많은 참조가 포함되어 있습니다.

지금까지 로거를 구현하는 클래스를 작성했지만 MyLogger에서 로거로 캐스팅하지 않았습니다. Logger에서 MyLogger 로의 참조를 변경하는 것은 정확하게 로켓 과학은 아니지만 구현시 log4j와 매우 비슷하게 유지하려고했습니다.

log4j를 사용하면 더 쉬운 방법이 있습니까? 그렇지 않다면 - 로깅 구현 방법을 작성하는 방법에 대한 방법 또는 자습서가있는 사람이 있습니까?

+0

이전 질문에 대한 답변 (http://stackoverflow.com/questions/9630616)이 맞습니까? –

답변

0

스레드별로 로그 이벤트를 다른 파일에 추가하는 Appender을 구현할 수 있습니다. 이 appender는 로깅 코드를 변경하지 않고 Log4J 구성에 등록 할 수 있습니다. This 자습서가 귀하의 문제와 유사하게 보입니다.

1

으로 전환하면 SiftingAppender을 이용할 수 있습니다. 원하는대로 정확히 수행합니다. 일부 기준에 따라 로그를 별개의 appender로 분리합니다. 파일. 기본적으로 (아마도 좋은 아이디어)을 사용하지만 쉽게 자신의 Discriminator을 작성할 수 있습니다.

Log4J에서 Logback으로 전환해도 문제가되지 않습니다. log4j-over-slf4j. 기본적으로 Log4J API를 사용하여 한 줄의 코드를 변경하지 않고 전환 할 수 있습니다.