【发布时间】:2011-01-15 19:36:54
【问题描述】:
我看到 LogNet 通常使用静态变量进行实例化:
static logger = LogManager.GetLogger(frame.GetMethod().DeclaringType);
愚蠢的问题,但是:
1) 这不是有点烦人吗 --- 即。我必须在我的代码的每个日志记录片段中都有这个混乱的调用。
2) 这不会产生大量的内存开销 --- 即。我的每一个类都将与一个单独的日志记录类相关联。 300 个使用日志的类会强制使用 300 个日志静态变量?看起来很奇怪。
【问题讨论】:
-
不是几百个小物件那么贵...
-
嗯,从编码的角度来看,这似乎仍然很痛苦……例如,我必须记住每次都将记录器实例化为“静态”。如果我忘记了这一点,那么我会受到性能惩罚。是否有技巧可以避免或简化此问题?
-
不确定,但如果使用相同的参数调用,GetLogger() 方法可能应该返回相同的记录器。因此,如果您有 300 个类的实例,则应该为所有这些实例使用一个记录器。
标签: c# asp.net memory-management log4net