非锁定TextWriterTraceListener?

时间:2010-02-14 16:14:03

标签: c# .net logging

我正在使用TextWriterTraceListener将我的跟踪信息输出到日志文件中。不幸的是它锁定了日志文件,我无法在应用程序运行时从外部打开它。有什么方法可以实现这个目标吗?

3 个答案:

答案 0 :(得分:5)

这取决于你使用的构造函数。 TextWriterTraceListener(String)构造函数创建一个StreamWriter,使用FileShare.Read打开该文件。这允许任何进程读取文件。

通常的问题是尝试在其他进程中使用错误的FileShare设置打开文件。您必须指定FileShare.ReadWrite。跟踪侦听器已经获得了对该文件的写访问权限,您无法否认它。

答案 1 :(得分:2)

使用TextWriterTraceListener时是否可以在外部监视文件取决于您使用哪种软件进行监视。我通常使用BareTail,该文件被锁定没有问题。

答案 2 :(得分:0)

我最近写了一篇。不幸的是我无法共享源代码,但我可以告诉你,不到500行代码。关键是正确打开文件,允许读取共享,如您所述。我做的另一件事是缓冲写入,并在收到一定数量的字节后才写入它们。我也是异步编写的,所以它没有阻止应用程序。