我在.NET中有一个需要记录的应用程序。我想记录某些事件和例外。我在网上看到,log4net被大力推荐用于此目的。我将其设置为快速开始记录到txt文件。
但这对我的目的来说还不够好。在我的应用程序中,我希望能够启动一个监视器,其中包含正在生成的所有日志的实时列表。
如果log4net是最佳方法吗?如果没有,那是什么?
我没有使用日志事件并找到自己的方式来显示数据,我只是不知道将日志记录事件发送到我的监视器表单的最佳方法。
答案 0 :(得分:3)
您可能需要查看log2console,这是一个与log4net兼容的出色的日志记录监视器。它可以监听log4net远程处理程序并很好地呈现数据。
如果您需要在程序中实现自己的监视器,我建议您尝试MemoryAppender。有一些有用的信息here(问题实际上是一个非常好的教程)
如您所见,他设置了两个appender - 一个登录到文件,另一个登录到内存appender。在监视器中,您可以使用以下代码获取appender的句柄:
Hierarchy hierarchy = LogManager.GetRepository() as Hierarchy;
MemoryAppender mappender = hierarchy.Root.GetAppender("MemoryAppender") as MemoryAppender;
您可以使用mappender.GetEvents()
在后台线程中循环获取新事件,然后使用mappender.Clear()
清除它。请记住,这不是线程安全的,因此为日志记录创建线程安全包装器可能是个好主意。