rik*_*koe 8 c# logging multithreading enterprise-library
我有几个并发运行的进程,我想要登录到同一个文件.
我们一直在使用Enterprise Library 4.1 Logging Application Block(带有a RollingFlatFileTraceListener
),它工作正常,除了它在两个进程同时尝试写入日志文件时为日志文件名添加GUID这一事实(a System.Diagnostics.TextWriterTraceListener
我相信的怪癖).
我尝试了各种各样的事情,包括Logger.Writer.Dispose()
写入日志文件后调用,但每次写入日志条目时都不适合进行阻塞调用.
EntLib论坛建议将MSMQ与分销商服务一起使用,但这不是一个选项,因为我的公司不允许使用MSMQ.
有没有其他方法可以快速轻松地从多个线程/进程登录到同一个文件?
很抱歉,但答案是否定的。File TraceListeners 锁定输出文件,因此只有一个 TraceListener 可以登录到一个文件。
您可以尝试其他不基于文件的跟踪侦听器(例如数据库、事件日志)。
我能想到的另一个选择是编写自己的日志记录服务(进程外),该服务将记录到文件并接受 LogEntries。然后创建一个自定义跟踪侦听器,将消息发送到您的服务。
这可能不是一个好主意,因为您会有一些自定义开发,而且它可能会影响性能,因为它是进程外调用。基本上,您正在设置自己的简化伪分销商服务。
归档时间: |
|
查看次数: |
8699 次 |
最近记录: |