2009-03-04 41 views
3

我正在以編程方式在log4net中配置RollingFileAppender。我目前有類似的東西:以編程方式配置RollingFileAppender日期滾動

RollingFileAppender fa = new RollingFileAppender(); 
fa.AppendToFile = true; 
fa.RollingStyle = RollingFileAppender.RollingMode.Date; 
fa.DatePattern = "yyyyMMdd"; 
fa.StaticLogFileName = true; 
// Set more properties and add the appender to the root repository 

這拒絕根據日期滾動日誌。如果我將RollingStyle切換到Size或Composite,它將隨後滾動,但僅基於尺寸,而不是基於日期。我嘗試刪除StaticLogFileName並使用DatePattern玩弄無濟於事。

我必須以編程的方式進行配置,因爲我不知道運行時的appender數量,所以使用XML來配置它,這是我過去一直能夠使用的,這是一個不好的做法。任何人有任何想法?我錯過了什麼嗎?

回答

2

這種行爲是因爲RollingFileAppender(和其他許多appender以及過濾器)實現the IOptionHandler interface這一事實,它允許一個對象延遲其選項的激活,直到所有選項都被設置爲止。直到所有設置都保持不明確的相關選項「。

此外:「設置配置屬性後,必須在此對象上調用ActivateOptions方法。直到調用ActivateOptions,此對象處於未定義狀態,且不能使用。

通過xml文件配置適配器時,您不必考慮激活,因爲它是由log4net配置程序完成的。

0

在設置文件appender之後,但在將appender添加到層次結構之前,我添加了一個對ActivateOptions()的調用,而且似乎可行。爲什麼有些選項在沒有通話的情況下卡住了,但其他人卻不是另一天的問題。