【问题标题】:How to use Common.Logging.Log4Net to log all messages grouped如何使用 Common.Logging.Log4Net 记录分组的所有消息
【发布时间】:2012-12-06 17:35:29
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# log4net


    【解决方案1】:

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

    我能想到的几个选项:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 2018-04-29
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多