2017-11-15 9 views
0

logback에서 appender를 동적으로 추가하려고합니다. 여기 내 코드가있다.프로그래밍 방식으로 appender를 logback/slf4j에 추가하십시오.

LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); 
PatternLayoutEncoder ple = new PatternLayoutEncoder(); 
ple.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n"); 
ple.setContext(lc); 
ple.start(); 
FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>(); 
String logFile = "new.log"; 
fileAppender.setFile(logFile); 
fileAppender.setEncoder(ple); 
fileAppender.setContext(lc); 
fileAppender.start(); 

ch.qos.logback.classic.Logger logbackLogger = 
       (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(ModuleMessageHandler.class); 
logbackLogger.addAppender(fileAppender); 
logbackLogger.setLevel(Level.DEBUG); 
logbackLogger.setAdditive(false); 

제대로 작동하지만 appender가 추가 된 특정 로거에서만 작동합니다. 이 응용 프로그램의 모든 로거에 대해 작동하도록하는 방법이 있습니까?

LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); 
PatternLayoutEncoder ple = new PatternLayoutEncoder(); 
ple.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n"); 
ple.setContext(lc); 
ple.start(); 
FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>(); 
String logFile = "new.log"; 
fileAppender.setFile(logFile); 
fileAppender.setEncoder(ple); 
fileAppender.setContext(lc); 
fileAppender.start(); 

가 ... 작성하고 파일 어 펜더를 시작합니다 : 동적으로 펜더에게 감사

+1

당신은 루트 로거를 원합니다. Logger root = (Logger) LoggerFactory.getLogger (Logger.ROOT_LOGGER_NAME); –

답변

1

코드의이 섹션을 추가 및 제거 할 수있는 방법을 찾고 있어요.

코드의이 섹션 ...

ch.qos.logback.classic.Logger logbackLogger = 
       (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(ModuleMessageHandler.class); 
logbackLogger.addAppender(fileAppender); 
logbackLogger.setLevel(Level.DEBUG); 
logbackLogger.setAdditive(false); 

은 ... ModuleMessageHandler에 대한 로거 인스턴스 파일 어 펜더를 연결합니다.

:

경우, 대신, 파일 어 펜더가 (@ BillO'Neil로) 다음 응용 프로그램에서 모든 로거 인스턴스와 관련된 당신이 루트 로거 사용하여 파일 어 펜더를 연결해야합니다 제안 싶은

ch.qos.logback.classic.Logger logbackLogger = 
       (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); 
logbackLogger.addAppender(fileAppender);