我试图找出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);
}
}