当前位置: 首页 > 编程语言 > C#

在单独的线程上运行Log4Netappender分享

时间:2023-04-10 14:12:33 C#

在单独的线程上运行Log4Netappender目前,我有自己的日志系统,其中日志本质上是一个队列,一个单独的线程监听该队列和所有实际的写操作执行。系统处理大量的日志消息,文件的大小很容易在几分钟内超过10MB,因此在调用线程中进行实际日志记录是不可行的。我无法在网上找到显示线程如何在log4net中工作的资源,如果log4net已经支持这种消息传递架构,或者其他类似的功能是否在线程环境中工作。是否有任何预先存在的功能可以帮助我?如果不创建log4net包装器,这可能吗?如果您的日志数据依赖于特定的顺序,您可能需要重新考虑您的线程方法-线程可能会干扰它并最终乱序发布日志条目。您可以尝试使用MSMQ(或其他一些队列技术)快速将日志消息发送到其他进程,然后将它们物理写入存储。这将保证消息以与发送时相同的顺序显示。不错的主意。诀窍是将条目排队并在单个队列中处理它们。看看http://www.drdobbs.com/visualstudio/225700095的一个很好的例子。你可以随时查看log4net的源代码来发现这些问题。它是开源的。如果使用.NETFramework4,您可以使用BlockingCollection来保存日志序列我已经成功地使用了ParallelForwardingAppender和AsyncForwardingAppenderappender。这些附加程序可从以下存储库获得:https://github.com/cjbhaines/Log4Net.AsyncParallelForwardingAppender利用BlockingCollection和任务并行库的其他方面来实现无损消息队列。AsyncForwardingAppender在后台线程上使用环形缓冲区和10毫秒轮询周期来优先考虑应用程序性能而不是记录保真度。以上就是C#学习教程:单独线程运行Log4Netappender,分享全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: