我正在尝试用一个依赖注入框架找出 log4net 的正确模式和用法。
Log4Net 使用 ILog 接口,但需要我调用
LogManager.GetLogger(Reflection.MethodBase.GetCurrentMethod().DeclaringType)
在需要记录信息的每个类或方法中。这似乎违背了 IoC 的原则,并将我与使用 Log4Net 结合起来。
我是否应该在某个地方设置另一个抽象层?
另外,我需要像下面这样记录自定义属性:
log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName;
我如何封装它,这样我就不必记得每次都这样做,同时仍然维护当前的日志记录方法。我应该做这样的事情,还是我完全错过了目标?
public static class Logger
{
public static void LogException(Type declaringType, string message, Exception ex)
{
log4net.ThreadContext.Properties["userName"] = ApplicationCache.CurrentUserName;
ILog log = LogManager.GetLogger(declaringType);
log.Error(message, ex);
}
}