2010-01-20 42 views
3

這是我第一個關於堆棧溢出的問題。我沒有太多的運氣通過谷歌或stackoverflow找到答案。NUnit和Log4Net集成:基於日誌斷言

我有興趣做一個nunit測試,檢查日誌中特定條目的log4net,並根據該搜索的結果斷言。

基於一個不相關的職位,我讀重:log4net的,我想我大概可以使用MemoryAppender通過GetEvents方法來做到這一點,細讀事件的數組返回。我想知道: 1.有沒有人做過這個?任何陷阱或建議?任何替代方法? 2.是否有任何食譜可以呈現?

謝謝。

回答

3

好吧,回答我的問題(或者說,我的同事是,由於貝絲)。

在你的log4net的配置: 配置:

<log4net> 
    <appender name="MemoryAppender" type="log4net.Appender.MemoryAppender" /> 
    <root> 
    <level value="DEBUG" /> 
    <appender-ref ref="MemoryAppender" /> 
    </root> 
</log4net> 

在.NET代碼:

List<string> messages = new List<string>(); 
Hierarchy hierarchy = LogManager.GetLoggerRepository() as Hierarchy; 
MemoryAppender appender = hierarchy.Root.GetAppender("MemoryAppender") as MemoryAppender; 
LoggingEvent[] eventList = appender.GetEvents(); 

foreach (LoggingEvent item in eventList) 
    messages.Add(item.RenderedMessage); 

return messages.ToArray(); 

一旦你的信息陣列,做你想做什麼。

如果您有現有的日誌文件並且想要搜索它,則不會解決此問題。