3

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

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

根据我阅读的一篇无关帖子:log4net,我想我可能可以使用 MemoryAppender 通过 GetEvents 方法执行此操作并仔细阅读返回的事件数组。

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

谢谢。

4

1 回答 1

3

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

在 log4net 的配置中: config:

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

一旦你有消息数组,做你想做的事。

如果您有一个现有的日志文件并想要搜索它,这并不能解决。

于 2010-01-22T18:04:00.837 回答