如何使用Common.Logging.Log4Net记录所有分组的消息

时间:2012-12-06 17:35:30

标签: c# log4net

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

来自线程1的

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

我可以想到的几个选项:

  • 记录线程ID。查看输出时,请使用更合适的日志分析器。如果您使用CSV或其他常见格式,Excel可以正常工作。当您对某个线程的操作感兴趣时,请过滤线程ID。我先试试这条路线。
  • 将每个线程记录到单独的文件中。我见过微软有时会这样做。可能工作正常。必须以某种方式唯一地识别每个文件。猜猜log4net可以解决这个问题。