为多线程排序日志条目

本文关键字:日志 排序 多线程 | 更新日期: 2023-09-27 18:05:54

我确实有两个并行线程,使用log4net文件附加程序使用以下模式写入同一个logFile:

<layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date{HH:mm:ss} %-5level - %message%newline" />
</layout>

问题是一旦我添加了像

这样的条目日志:
_log.Info("Something to log"); 

我会找到我的日志与非有序的条目,从线程A和b。我想要的是:

Log File: 
  + Log 1 Thread A
  + Log 2 Thread A
  + Log 3 Thread A
  + Log 1 Thread B
  + Log 2 Thread B

…等等

我怎样才能做到这一点?在Log4Net中有什么东西可以实现这一点吗?我首先教的是将日志保存在内存中,然后在线程完成后刷新它,但是如果进程将被杀死,那么这不是一个好主意,所有条目将丢失。

请帮忙将不胜感激。

谢谢

为多线程排序日志条目

似乎因为你正在运行2个进程,你可以添加一个缓冲区向前追加器。下面的示例展示了如何配置BufferingForwardingAppender,以便在将100条消息传递给ConsoleAppender之前缓冲它们。

<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" >
    <bufferSize value="100"/>
    <appender-ref ref="ConsoleAppender" />
</appender>

消息部分按BufferSize块排序