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