我编写了一个使用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的调用。还有其他方法可以减少更改吗?