Log4j에 프로그래밍 방식으로 Appender를 추가 / 제거 할 수 있습니다.
ConsoleAppender console = new ConsoleAppender(); //create appender
//configure the appender
String PATTERN = "%d [%p|%c|%C{1}] %m%n";
console.setLayout(new PatternLayout(PATTERN));
console.setThreshold(Level.FATAL);
console.activateOptions();
//add appender to any Logger (here is root)
Logger.getRootLogger().addAppender(console);
FileAppender fa = new FileAppender();
fa.setName("FileLogger");
fa.setFile("mylog.log");
fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
fa.setThreshold(Level.DEBUG);
fa.setAppend(true);
fa.activateOptions();
//add appender to any Logger (here is root)
Logger.getRootLogger().addAppender(fa);
//repeat with all other desired appenders
어딘가에 init ()에 넣는 것이 좋습니다. 어딘가보다 먼저 실행될 것입니다. 그런 다음 루트 로거에서 기존의 모든 appender를 제거 할 수 있습니다.
Logger.getRootLogger().getLoggerRepository().resetConfiguration();
직접 추가하는 것으로 시작하십시오. 이것이 작동하려면 물론 클래스 경로에 log4j가 필요합니다.
비고 : 어 펜더를 추가 할
수 있습니다 Logger.getLogger(...)
. 루트 로거는 모든 것의 맨 아래에 있기 때문에 루트 로거를 가져 갔으며 (추가 플래그를 설정하여 다르게 구성되지 않는 한) 다른 카테고리의 다른 어 펜더를 통해 전달되는 모든 것을 처리합니다.
로깅 작동 방식과 로그 작성 위치를 결정해야하는 경우이 매뉴얼 을 읽고 이에 대한 자세한 정보를 확인하십시오.
한마디로 :
Logger fizz = LoggerFactory.getLogger("com.fizz")
"com.fizz"범주에 대한 로거를 제공합니다.
위의 예에서 이것은 로그 된 모든 것이 루트 로거의 콘솔 및 파일 어 펜더에 의해 참조됨을 의미합니다.
Logger.getLogger ( "com.fizz"). addAppender (newAppender) fizz
에 어 펜더를 추가하면 루트 로거 및의 어 펜더가 aller에 의해 로그인을 처리합니다 newAppender
.
구성을 사용하여 로거를 작성하지 않고 시스템의 모든 가능한 카테고리에 대한 핸들러 만 제공합니다.