我已经使用Log4Net几个月了,我创建了一个新的Logger作为每个类的成员变量,如下所示:
// Member variables
private readonly ILog m_Logger = LogManager.GetLogger("MyClass");
然后我从记录的类中的每个方法调用记录器,如下所示:
// Initialize
m_Logger.Info("MyClass.MyMethod() invoked.");
...
m_Logger.Debug("MyClass.MyMethod() did something...");
...
m_Logger.Info("MyClass.MyMethod() completed.");
有没有理由不使用这种方法,还是有更好的方法来设置记录器?谢谢你的帮助。
答案 0 :(得分:13)
您的记录器应该是静态的,您可以利用其他覆盖,例如使用类型:
private static readonly ILog m_Logger = LogManager.GetLogger(typeof(MyClass));
为了提高性能,您还应该在调用相应的日志功能之前检查您所处的日志级别。例如:
if (m_Logger.IsDebugEnabled) { m_Logger.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString()); }
上面的例子还显示了使用反射来获取方法名称。