繁体   English   中英

SLF4J - Logback:如何在运行时配置记录器?

[英]SLF4J - Logback: How to configure loggers in runtime?

我们正在使用LogBack和我们的项目,我想根据一些数据库值配置记录器,即如果某个DB值设置为true,那么logger应该使用文件和DB appender,如果它是false,那么logger必须只使用DB appender ,

我还想保留使用静态最终记录器,因此每次调用记录器时我都不会创建新实例,

那我怎么能这样做呢?

问候,

您应该按照此示例中的描述以编程方式配置Logback。

public class Main {

   public static void main(String[] args) {
     Logger logger = (Logger) LoggerFactory.getLogger("abc.xyz");

     LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
     FileAppender<LoggingEvent> fileAppender =
                       (FileAppender<LoggingEvent>) logger.getAppender("file");
     if(fileAppender != null) {
       fileAppender.stop();
       fileAppender.setFile("new.log");
       PatternLayout pl = new PatternLayout();
       pl.setPattern("%d %5p %t [%c:%L] %m%n)");
       pl.setContext(lc);
       pl.start();
       fileAppender.setLayout(pl);
       fileAppender.setContext(lc);
       fileAppender.start();
     }
     ... etc    
   }
}

从数据库中读取配置属性背后是否有特定原因? 一个建议是使用JNDI。 Logback可以使用标记读取JNDI配置的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM