1

所以我使用 Common.Logging.Log4Net 进行日志记录,但由于代码是多线程的,因此消息经常混淆,例如:

来自线程 1 的消息 来自线程 2 的消息 来自线程 1 的消息 来自线程 1 的消息 来自线程 2 的消息

为了避免这种情况,我们试图将所有消息放在一起,并在执行完成时将它们全部打印出来。为此,我们基本上有一个 Action 委托列表,每个委托都包含日志行,例如:

            Log.DebugFormat("Handling...");

但不幸的是,这并没有解决任何问题,因为当我们写回日志时,消息仍然混杂在一起,因为我们所做的只是列表上的一个 foreach 并执行委托。那么有什么方法可以一次写入所有消息?

4

1 回答 1

1

听起来您正在寻找某种事务日志记录。从本质上讲,应用程序日志记录是顺序的。

我能想到的几个选项:

  • 记录线程 ID。查看输出时使用更合适的日志分析器。如果您使用 CSV 或其他常见格式,Excel 可以正常工作。当您对某个线程的操作感兴趣时,请过滤线程 ID。我会先尝试这条路线。
  • 将每个线程记录到单独的文件中。我见过微软偶尔会这样做。可能工作正常。必须以某种方式唯一标识每个文件。猜测 log4net 可以处理。
于 2012-12-06T17:55:01.140 回答