我想设置一个通用的日志库,它决定了基于当前堆栈的ILog
实例以及什么是最佳的ILog实例。每个命名空间的不同appenders
我有我的配置设置如下:
<log4net>
<!-- appenders omitted -->
<root></root>
<logger name="MyAssembly.MyNamespace">
<level value="WARN" />
<!-- appender list -->
</logger>
</log4net>
而且我有这样一个类:
namespace MyAssembly.MyNamespace.SubNamespace {
public class MyClass { ... }
}
当我尝试并获得ILog
一个实例我传中,键入(var log = LogManager.GetLogger(typeof(MyClass)).Namespace);
),我希望它检测到没有配置任何记录器,因此它会在名称空间树中上升一级(至MyAssembly.MyNamespace
),然后查看它是否在该点配置。
问题是ILog
为MyAssembly.MyNamespace.SubNamespace
返回配置WARN事件(及以上),本质上是我配置它的父母。 Log4net似乎在返回ILog
时所需的名称包含的一个定义的名称,而不是当它的等于的名称。
当名称与配置中定义的名称相同时,如何让Log4net仅返回有效的记录器?
也许依赖注入记录器实例会是一个更好的设计? – 2009-07-23 01:02:13