Log4Net:如何获取Logger?

Dav*_*man 5 c# logging log4net

我已经使用Log4Net几个月了,我创建了一个新的Logger作为每个类的成员变量,如下所示:

// Member variables
private readonly ILog m_Logger = LogManager.GetLogger("MyClass");
Run Code Online (Sandbox Code Playgroud)

然后我从记录的类中的每个方法调用记录器,如下所示:

// Initialize
m_Logger.Info("MyClass.MyMethod() invoked.");
...
m_Logger.Debug("MyClass.MyMethod() did something...");
...
m_Logger.Info("MyClass.MyMethod() completed.");
Run Code Online (Sandbox Code Playgroud)

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

Rus*_*uss 13

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

private static readonly ILog m_Logger = LogManager.GetLogger(typeof(MyClass));
Run Code Online (Sandbox Code Playgroud)

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

if (m_Logger.IsDebugEnabled) { m_Logger.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString()); }
Run Code Online (Sandbox Code Playgroud)

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

  • 这只是一个例子.使用反射可以将线条简单地剪切并粘贴到多个位置,而无需编辑正确方法名称的线条. (2认同)