Java 以编程方式在logback中添加appender
我试图在logback中动态添加一个appender。这是我的密码Java 以编程方式在logback中添加appender,java,logging,logback,slf4j,Java,Logging,Logback,Slf4j,我试图在logback中动态添加一个appender。这是我的密码 LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); PatternLayoutEncoder ple = new PatternLayoutEncoder(); ple.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n"); ple.setContext(l
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();
PatternLayoutCoder ple=新的PatternLayoutCoder();
setPattern(“%date%级别[%thread]%logger{10}[%file:%line]%msg%n”);
ple.setContext(lc);
ple.start();
FileAppender FileAppender=新FileAppender();
字符串logFile=“new.log”;
fileAppender.setFile(日志文件);
fileAppender.setEncoder(ple);
setContext(lc);
fileAppender.start();
ch.qos.logback.classic.Logger日志记录器=
(ch.qos.logback.classic.Logger)LoggerFactory.getLogger(ModuleMessageHandler.class);
logbackLogger.addAppender(fileAppender);
logbackLogger.setLevel(Level.DEBUG);
logbackLogger.setAdditive(假);
它工作正常,但仅适用于添加了appender的特定记录器。有没有一种方法可以让应用程序中的所有记录器都能使用它?我正在寻找一种动态添加和删除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();
。。。将文件追加器与ModuleMessageHandler
的记录器实例相关联
相反,如果您希望文件追加器与应用程序中的所有记录器实例相关联,则(如@BillO'Neil所示),您必须将文件追加器与根记录器相关联:
ch.qos.logback.classic.Logger logbackLogger =
(ch.qos.logback.classic.Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
logbackLogger.addAppender(fileAppender);
您想要获取根记录器。Logger root=(Logger)LoggerFactory.getLogger(Logger.root\u Logger\u NAME);不过这只是回写,没有看到任何SLF4jSetAdditional(false)在这里做什么?
ch.qos.logback.classic.Logger logbackLogger =
(ch.qos.logback.classic.Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
logbackLogger.addAppender(fileAppender);