log4net如何覆盖XML配置?

3

我正在使用通过配置文件进行配置的log4net。有一种情况,我希望在调试模式下记录所有内容(在升级期间使用的某些代码)。是否有任何方法可以获取当前日志记录级别,将其设置为调试模式,运行指定的代码,然后返回之前的级别?

3个回答

3
你可以在配置文件中添加一个专门用于DEBUG的部分。
 <logger name="MyApp.DebugLogging" additivity="false">
        <level value="DEBUG"/>
        <appender-ref ref="MainLog"/>
    </logger

然后在你的代码中,你可以使用以下方式访问这个日志记录器:

 private static readonly ILog debuglog = log4net.LogManager.GetLogger("MyApp.DebugLogging");

并在您的代码块中使用该变量作为

 debuglog .Debug(ex);

这里的想法是您应该能够在配置文件中创建不同的记录器,然后在代码块中灵活选择要使用的记录器。

这是一个很好的解决方案。然而,我宁愿使用现有的日志记录器,而不是仅为所述过程创建新的记录器。为什么?因为如果您正确使用日志记录基础设施,每个记录器中都应该已经有“Debug”方法。只需在配置文件中更改日志记录级别(或过滤器等),您就可以在系统中查看“Debug”级别,而无需添加任何新代码。新代码意味着更多的维护和潜在的错误。 - Ron Klein

1
这是一个想法:
仅使用log4net配置文件。将“watch”标志设置为true,以便监视它。
在此配置文件中,在每个appender中设置日志过滤器并将其最小级别设置为例如 Info 等。请参见http://logging.apache.org/log4net/release/manual/configuration.html中的Filters部分。
然后,在升级阶段之前,编辑配置文件并将过滤器的最小级别更改为 Debug 之类的级别。
升级完成后,请将过滤器的最小级别重新设置为原始值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接