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