【问题标题】:Write to same log file two instances of the same application将同一应用程序的两个实例写入同一日志文件
【发布时间】:2014-09-20 17:14:38
【问题描述】:

如何从同一个应用程序的两个实例写入同一个文件。对于写入,我使用了来自 System.Diagnostis 命名空间的 TraceSource 类和 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进行线程写入(由两个应用程序实例写入)?

【问题讨论】:

  • 你应该发布一些相关的代码让我们开始
  • 互斥体灵魂应该可以工作,也许您的代码中某处有错误。
  • N4rk0,我需要任何例子
  • #1 详细说明“不能正常工作”。我不知道你的意思。机器会起火吗?

标签: c# mutex tracesource


【解决方案1】:

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

只要 process1.exe 开始写入跟踪文件,它就会在进程期间保持锁定。当 process2.exe 尝试写入同一个文件时,它会机器生成一个新文件的名称,例如 file13.txt

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多