2011-08-24 133 views

回答

1

不,沒有。實際上,在log4j中也沒有實現這樣的組合策略,所以它不會被轉移到log4cxx。

我曾經有過編寫這種混合策略滾動文件appender(儘管在log4j中)的任務。我通過覆蓋FileAppender來做到這一點,尤其是,該方法

// log4j 
void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize); 
// log4cxx 
void setFile(const LogString& filename, bool append1, bool bufferedIO1, size_t bufferSize1, Pool& p); 

,可持續記錄進程重新啓動後相應的日誌塊,並

// log4j 
void subAppend(LoggingEvent event); 
// log4cxx 
virtual void append(const spi::LoggingEventPtr& event, log4cxx::helpers::Pool& p); 

每個日誌條目滾動在條件是否爲真後進行測試。

在log4j/cxx中實現自己的appender的一個真正強大的功能是您可以在log4j.properties中定義它的屬性並讓它們由庫設置。在Java中,你可以免費獲得它,這要歸功於反思;在log4cxx中,您只需編寫您的代碼

void setOption(const LogString& option, const LogString& value); 

方法,其中您遍歷選項字符串並執行必要的初始化操作。

希望能幫到你,並且在合適的時間來臨。