27

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

我还想保留使用静态最终记录器,所以我不会在每次调用记录器时创建一个新实例,

那么我怎么能做这样的事情呢?

问候,

4

2 回答 2

19

您应该按照本示例中的描述以编程方式配置 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    
   }
}
于 2011-04-19T11:24:11.073 回答
1

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

于 2011-04-10T06:46:00.223 回答