log4net-增强以自动在每行中包含另一个字段

时间:2018-07-03 07:28:52

标签: c# logging optimization

我编写了一个使用log4net记录多个条目的应用程序。我在Log.Error,Log.Info,Log.Debug及其相应的格式方法中有数百个调用。

在我的配置文件中,我具有以下格式条目:

<layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>

每个类都具有以下内容:

private static readonly ILog Log = LogManager.GetLogger(typeof(ClassName));

使用记录器的每个类的每个实例都有一个名为“ id”的字段。

是否有一种方法可以保留每个条目,即: Log.InfoFormat(“用户{0}的接收事件”,用户); 应该打印:

  

2018-07-03 10:17:42,030 [28]调试MyApplication.ClassName-收到   用户的事件.....

但是可以增强它以打印出来:

  

2018-07-03 10:17:42,030 [28]调试MyApplication.ClassName- ID = 1   用户.....

收到的事件

一种解决方法是创建一个LoggerWrapper,它将在每个单独的类中构造。 LoggerWrapper应该提供Logger已经提供的所有方法,并应该委派给封装的Logger,并且在每条消息中都附加ID。其构造函数将获取每个元素的ID。

然后,我应该转到对记录器的每个调用,并改为对LoggerWrapper的调用。还有其他方法可以减少更改吗?

0 个答案:

没有答案