Log4Net:如何获取Logger?

时间:2010-08-19 16:37:23

标签: c# logging log4net

我已经使用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.");

有没有理由不使用这种方法,还是有更好的方法来设置记录器?谢谢你的帮助。

1 个答案:

答案 0 :(得分:13)

您的记录器应该是静态的,您可以利用其他覆盖,例如使用类型:

private static readonly ILog m_Logger = LogManager.GetLogger(typeof(MyClass));

为了提高性能,您还应该在调用相应的日志功能之前检查您所处的日志级别。例如:

if (m_Logger.IsDebugEnabled) { m_Logger.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString()); }

上面的例子还显示了使用反射来获取方法名称。