我想以編程方式配置LogBack的RollingFileAppender
(ch.qos.logback.core.rolling.RollingFileAppender
),它似乎並沒有工作。當我使用FileAppender
時,一切似乎都工作正常,完全相同的配置(較少的政策/觸發),所以我猜這不是一個權限問題。我試着評論所有的政策配置,這也沒有幫助。以下是我的示例代碼,帶有一些硬編碼值。此外,沒有任何錯誤是如此。當我調試LogBack源代碼時,我沒有看到任何可能出錯的東西。LogBack RollingFileAppender不寫日誌文件(儘管FileAppender的作品)
任何提示都是值得讚賞的。我需要在沒有配置文件的情況下運行,因爲這是我組織中的一個限制。我在MacBook上測試了這一點。
Logger logger = (Logger)LoggerFactory.getLogger(applicationName);
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
lc.reset();
RollingFileAppender<ILoggingEvent> fileAppender =
new RollingFileAppender<ILoggingEvent>();
fileAppender.setAppend(true);
fileAppender.setFile("/Users/Jack/Desktop/logs/" + applicationName + ".log");
fileAppender.setContext(lc);
SizeBasedTriggeringPolicy<ILoggingEvent> rPolicy =
new SizeBasedTriggeringPolicy<ILoggingEvent>("20MB");
fileAppender.setTriggeringPolicy(rPolicy);
TimeBasedRollingPolicy<ILoggingEvent> tPolicy =
new TimeBasedRollingPolicy<ILoggingEvent>();
tPolicy.setFileNamePattern("/archive/" + applicationName + ".%d");
tPolicy.setMaxHistory(180);
tPolicy.setParent(fileAppender);
tPolicy.setContext(lc);
PatternLayout pl = new PatternLayout();
pl.setPattern("%d %5p %t [%c:%L] %m%n)");
pl.setContext(lc);
pl.start();
fileAppender.setLayout(pl);
fileAppender.start();
logger.addAppender(fileAppender);
logger.setLevel(Level.DEBUG);
logger.debug("Test message");
我想出了這個問題。我忘了設置RollingPolicy,所以appender從未開始。我認爲它在無法啓動時會拋出異常,所以我忽略了這部分。 – juminoz
上週在設置RollingPolicy後,它正常工作,並突然停止。我目前正在尋找一種以編程方式啓用調試模式的方式來查看發生了什麼。這絕對不是權限問題,因爲FileAppender仍然有效。另一個線程在這裏可用。 http://stackoverflow.com/questions/8482359/programmatically-enable-logback-in-debug-mode – juminoz