我們在我們的項目中使用LogBack,我想根據某些數據庫值配置記錄器,即如果某些DB值設置爲true,則記錄器應該同時使用文件和數據庫appender,如果它是false,則記錄器必須僅使用DB的appender,SLF4J - Logback:如何在運行時配置記錄器?
我也想用靜態的最終記錄器來保存,所以我不會創建一個新的實例每次記錄器被調用時,
所以我怎麼會做這樣的事情?
問候,
我們在我們的項目中使用LogBack,我想根據某些數據庫值配置記錄器,即如果某些DB值設置爲true,則記錄器應該同時使用文件和數據庫appender,如果它是false,則記錄器必須僅使用DB的appender,SLF4J - Logback:如何在運行時配置記錄器?
我也想用靜態的最終記錄器來保存,所以我不會創建一個新的實例每次記錄器被調用時,
所以我怎麼會做這樣的事情?
問候,
您應該按this example中所述以編程方式配置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配置的值。
這是最便捷的方式,我發現到現在,它的工作對我來說,非常感謝 – 2011-04-21 08:01:38
這是我們使用的logback 1.0.6的事,但在1.1.7它不工作了:停止的appender不能被重用。請參閱http://logback.qos.ch/apidocs/ch/qos/logback/core/OutputStreamAppender.html#stop() – 2016-10-28 08:34:01
如果可以,請添加所有導入.. – 2016-12-26 06:45:04