这是Log4Net的正确用法吗?

时间:2014-04-07 10:13:01

标签: c# asp.net log4net

只是想知道我这样做是否正确:
我声明了Log4Net对象:

private static readonly log4net.ILog _log = log4net.LogManager.GetLogger
        (System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

然后在整个类的方法中,当我只使用log:

_log.Debug("passing...");

这样可以,或者我应该在方法中声明和使用Log4Net对象(在每种方法中实例化_log)?

1 个答案:

答案 0 :(得分:2)

这样做比在每种方法中声明记录器更好。您可以通过向上调用堆栈来再次找到您所使用的方法的名称,这里described因此初始化每个方法中的日志会适得其反,因为每次调用都会反映一段时间。

即使使用静态对象,反射调用解析您的类名也需要一些资源,但在您计时之前,您将无法知道它们对您的影响。如果在启动时开始观察到长时间延迟,可能是因为在解析类类型时运行记录器初始化。如果是这样,那么您将需要优化。但是现在,不要打扰,你做对了