多个客户端使用Logging Application Block写入单个文件

时间:2008-12-16 00:33:27

标签: .net logging codeblocks

我有以下情况: 1. .NET UI端使用Logging App Block写入平面文件 2.非托管Windows服务使用专有记录器写入与1相同的文件。

问题:有没有办法在记录条目后启用FlatFile TraceListener关闭它的文件句柄,以便Windows服务也可以写入文件?

谢谢!

更新: 我包括了Microsoft.Practices.EnterpriseLibrary.Logging.Logger.Writer.Dispose(); 这会关闭流,所以这样就可以了 - 只是好奇,如果有另一种方法可以做到这一点。

更新2:最终注释

P&P建议从多个应用程序写入单个MSMQ。这样您就不需要调用Dispose()等。

3 个答案:

答案 0 :(得分:2)

我必须使用log4net处理这个问题。我根本无法使用日志记录框架的文件日志记录支持,并且必须滚动我自己的日志附加程序来捕获共享冲突。此时,您可以选择缓冲内存中的事件并在以后写出或阻止,直到您可以访问该文件。

答案 1 :(得分:0)

我认为您的选择是处理它的最佳方式 - 只需在完成后处理作者,这应该最终确定并释放作者仍然拥有的所有资源。

另外,我会担心同时尝试写入并导致异常的处理,但也许App Block有一些内置的解决方法代码。

答案 2 :(得分:0)

你从哪里获得.Dispose? 我键入EnterpriseLibrary.Logging.Logger.Writer,但.Writer没有方法或属性,没有.Dispose。

谢谢,

TCW

找到它:

  
    

导入Microsoft.Practices.EntLib.Common可以解决问题。

  
相关问题