所以我使用 Common.Logging.Log4Net 进行日志记录,但由于代码是多线程的,因此消息经常混淆,例如:
来自线程 1 的消息 来自线程 2 的消息 来自线程 1 的消息 来自线程 1 的消息 来自线程 2 的消息
为了避免这种情况,我们试图将所有消息放在一起,并在执行完成时将它们全部打印出来。为此,我们基本上有一个 Action 委托列表,每个委托都包含日志行,例如:
Log.DebugFormat("Handling...");
但不幸的是,这并没有解决任何问题,因为当我们写回日志时,消息仍然混杂在一起,因为我们所做的只是列表上的一个 foreach 并执行委托。那么有什么方法可以一次写入所有消息?