2017-11-15 10 views
0

私はlogbackにアペンダーを動的に追加しようとしています。ここに私のコードです。プログラムでappletを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); 

正常に動作しますが、アペンダーが追加された特定のロガーでのみ機能します。これをアプリケーション内のすべてのロガーで動作させる方法はありますか?

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

ルートロガーを取得します。ロガールート=(ロガー)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); 
関連する問題