Log4Net:如何向每个日志行添加简单的索引器(行号)

ska*_*eff 3 .net c# logging log4net

这是问题:我想在日志文件中的每一行添加行索引器(行号或迭代器).我不需要它对于整个日志文件是唯一的,但仅适用于"应用程序会话"(即每次启动Win32应用程序时,我们开始倒计时:1,2,3等等)

是内置方式(转换模式标记语法)还是一些自定义扩展?

非常感谢!

Ste*_*gli 11

我的解决方案仅适用于一个appender,每次启动应用程序时都会重置计数器.

你可以使用模式转换器:

public sealed class LineCounterPatternConverter : PatternLayoutConverter
{       
    private static int _counter = 0;

    protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
    {
        var counter = System.Threading.Interlocked.Increment(ref _counter);
        writer.Write(counter.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你像这样配置它:

<layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="[%LC] %message%newline" />
  <converter>
    <name value="LC" />
    <type value="YourNameSpace.LineCounterPatternConverter" />
  </converter>
</layout>
Run Code Online (Sandbox Code Playgroud)

[]括号当然是可选的.你也可以做这样的事情%6LC,用空格填充行,这样你就能很好地对齐消息.