将同一应用程序的两个实例写入同一日志文件

时间:2014-07-29 10:47:58

标签: c# mutex tracesource

如何从同一个应用程序的两个实例写入同一文件。对于write,我使用TraceSource类和System.Diagnostis命名空间中的TraceEvent方法。我尝试使用Mutex创建方法进行写入,但我的方法无法正常工作。我找不到使用互斥锁进行TraceSource日志记录的示例。有人能帮助我吗?

我的日志课程:

public class LoggerTraceSource
 {
   private readonly TraceSource traceSource = new TraceSource();

  public void InfoTraceEvent(string message, int level)
        {
            traceSource.TraceEvent(TraceEventType.Information, level, message);
        }
 }

在我的应用程序中,我使用InfoTraceEvent写入日志文件。如何更改InfoTraceEvent进行线程写入(由两个应用程序实例写入)?

1 个答案:

答案 0 :(得分:0)

我在这里做了一些ESP诊断,因为我不知道症状是什么。我猜你有process1.exe和process2.exe,每个都有相同的system.diagnostics部分,即写入同一个文件。

只要process1.exe开始写入跟踪文件,它就会在进程持续时间内保持锁定状态。当process2.exe尝试写入同一文件时,它将为新文件生成一个名称,如file13.txt

此行为可能因听众而异。例如,如果您编写一个自定义侦听器,阻止尝试写入锁定文件,那么您将看到该行为。

我建议写入2个不同的文件或使用自定义侦听器在每次写入后关闭文件句柄。当两个进程碰巧尝试同时打开文件时,这需要重新尝试。