这是我关于堆栈溢出的第一个问题。我没有太多运气通过谷歌或stackoverflow找到答案。
我有兴趣让nunit测试检查log4net以查找日志中的特定条目,并根据该搜索的结果进行断言。
基于一篇不相关的帖子,我读了re:log4net,我想我可以使用MemoryAppender通过GetEvents方法完成这项工作并仔细阅读返回的事件数组。
但我想知道: 1.有人这样做过吗?有任何陷阱或建议吗?任何替代方法? 2.有没有他们可以提供的食谱?
感谢。
答案 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();
获得消息数组后,执行您想要的操作。
如果您有现有的日志文件并想要搜索它,则无法解决此问题。