我有一個看起來像下面這樣的logback.xml配置文件:的logback在運行時更改配置和日誌文件的創建問題
<configuration>
<property name="defaultPattern"
value="%d{dd/MM/yyyy HH:mm:ss.SSS} [%thread] %-5level - %msg%n" />
<!-- Appenders Configuration -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<target>System.err</target>
<filter class="com.aleroot.ErrOutFilter" />
<encoder>
<pattern>${defaultPattern}</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>aleroot.log</file>
<append>true</append>
<encoder>
<pattern>${defaultPattern}</pattern>
</encoder>
</appender>
<!-- Output Configuration -->
<root level="debug">
<appender-ref ref="FILE" />
<appender-ref ref="CONSOLE"/>
</root>
<logger name="mainLogger" level="debug">
<appender-ref ref="FILE" />
<appender-ref ref="CONSOLE"/>
</logger>
</configuration>
我想在運行時改變FILE附加器的文件和財產添加DatePattern的文件名,我已經嘗試使用此代碼:
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
ch.qos.logback.classic.Logger logbackLogger = lc.getLogger("mainLogger");
FileAppender<ILoggingEvent> fileAppender =
(FileAppender<ILoggingEvent>) logbackLogger.getAppender("FILE");
if(fileAppender != null) {
fileAppender.stop();
fileAppender.setFile("aleroot-ddMMyyyy.log");
fileAppender.setContext(lc);
fileAppender.start();
}
的問題是,文件aleroot.log創建反正也是,如果我已經改變了文件名,此外我得到了另一個文件,完全命名爲:aleroot-ddMMyyyy.log,而我想要一個文件名,如aleroot-04122011.log。我怎麼能做到這一點?
是否有避免在LoggerFactory.getLogger("mainLogger")
調用中創建日誌文件的設置?我希望僅在第一次寫入日誌文件時創建日誌文件,因此不需要創建空白日誌文件。 日誌文件應在我第一次登錄日誌時創建,例如在第一個logger.debug("Something.log")
。
有沒有一個設置來實現這一目標?
至於懶惰的日誌文件創建,看起來好像它還不被支持,但是[LB中有一個功能請求](http://jira.qos.ch/browse/LBCORE-184)。 – srkavin