0

我正在努力在多层应用程序中设置 log4net。我已根据需要设置了大部分日志记录,但现在我正试图以<logger>某种方式设置 .config 中的条目,以允许输出级别的最大灵活性。

我的记录器命名约定类似于:
ExecutableName.WorkerThreadName.[ExternalModuleName(s)].ClassName

我当前在 .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 语句,但这似乎不起作用。

4

1 回答 1

2

一般来说,我想捕获所有消息,至少是警告和严重级别。由于记录器从层次结构中较高的记录器以及最终从根记录器继承其级别,因此我仅将级别分配给顶级记录器。在您的情况下,这将是“ExecutableName”记录器。

对于那些我对查看除 FATAL 消息以外的信息不感兴趣的特殊情况记录器,我将添加一个特定的级别设置。但这通常不是一般情况,因此规模是可控的。

我发现在那些顶级记录器上设置例如 WARN 或 INFO 很有用,然后在各个级别上使用带有过滤器的附加程序。结果是潜在的大量消息根据级别被分组到不同的存储中。您甚至可以为每个顶级记录器设置单独的附加程序,以便对消息流进行更细粒度的控制。

于 2009-02-27T23:26:49.133 回答