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)
上面的示例还显示了使用反射来获取方法名称.