Log4net订购多个线程的日志条目

时间:2016-09-07 08:18:55

标签: c# multithreading log4net

我有2个并行线程使用这个模式使用log4net文件appender写入同一个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中有什么东西可以实现吗?我首先教会将日志保存在内存中,然后在线程完成后将其刷新,但如果进程被终止,则所有条目都将丢失,这不是一个好主意。

请提供任何帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

看来因为你正在运行2个进程,你可以添加一个缓冲区前向追加器。以下示例显示如何配置BufferingForwardingAppender以在将消息传递到ConsoleAppender之前缓冲100条消息。

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

消息部分按BufferSize的块排序。