NUnit和Log4Net集成:基于日志断言

时间:2010-01-20 19:58:17

标签: unit-testing nunit log4net assert

这是我关于堆栈溢出的第一个问题。我没有太多运气通过谷歌或stackoverflow找到答案。

我有兴趣让nunit测试检查log4net以查找日志中的特定条目,并根据该搜索的结果进行断言。

基于一篇不相关的帖子,我读了re:log4net,我想我可以使用MemoryAppender通过GetEvents方法完成这项工作并仔细阅读返回的事件数组。

但我想知道: 1.有人这样做过吗?有任何陷阱或建议吗?任何替代方法? 2.有没有他们可以提供的食谱?

感谢。

1 个答案:

答案 0 :(得分:3)

好的,回答我自己的问题(或者更确切地说,我的同事是,感谢Beth)。

在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();

获得消息数组后,执行您想要的操作。

如果您有现有的日志文件并想要搜索它,则无法解决此问题。