我正在设计一个多层应用程序中的log4net。我根据需要设置了大部分日志记录,但现在我正在尝试设置.config中的<logger>
条目,以便在输出的级别上实现最大的灵活性。
我的记录器命名约定类似于:
ExecutableName.WorkerThreadName [ExternalModuleName(S)]。类名
.config文件中的当前记录器定义部分如下所示:
<root>
<level value="DEBUG" />
<appender-ref ref="MyAppender" />
</root>
<logger name = "ExecutableName">
<level value="FATAL" />
</logger>
<logger name = "ExecutableName.WorkerThreadName">
<level value="OFF" />
</logger>
<logger name = "ExecutableName.WorkerThreadName.ClassName">
<level value="INFO" />
</logger>
<!--repeat as necessary--->
希望你明白这一点......看起来这有可能爆发出难以维护的条目(特别是当应用程序达到支持阶段时)。 有关如何最好地管理嵌套记录器的级别定义的任何建议? 实际上,我已经玩了一些实际的嵌套xml语句,但这似乎不起作用。
答案 0 :(得分:2)
一般来说,我希望捕获所有消息,至少是警告和严重级别。由于记录器从层次结构中较高的记录器以及最终从根记录器继承其级别,因此我仅将级别分配给顶级记录器。在您的情况下,这将是“ExecutableName”记录器。
对于那些特殊情况记录器,例如我我没有兴趣看到除FATAL消息以外的其他消息,我将添加一个特定的级别设置。但这通常不是一般情况,因此具有可控制的规模。
我觉得设置例如很有用对那些顶级记录器进行WARN或INFO,然后在各个级别上使用带过滤器的appender。结果是潜在的大量消息根据级别分组到不同的存储中。您甚至可以为每个顶级记录器提供单独的appender,以便对消息流进行更细粒度的控制。