【问题标题】:log4net override xml configuration?log4net 覆盖 xml 配置?
【发布时间】:2011-06-10 11:19:58
【问题描述】:

我正在使用通过配置文件配置的 log4net。在一种情况下,我希望所有内容都在调试中登录(升级期间使用的一些代码)。无论如何我可以获取当前的日志记录级别,将其设置为调试,运行指定的代码,然后回到之前的状态吗?

【问题讨论】:

    标签: c# log4net log4net-configuration


    【解决方案1】:

    您可以在配置文件中添加一个专门用于调试的部分

     <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 级别而无需向系统添加任何新代码。新代码需要更多维护和更多潜在错误。
    【解决方案2】:

    这是一个想法:

    仅使用 log4net 配置文件。将“watch”标志设置为true,以便观看。

    在此配置文件中,设置一个日志记录过滤器(在每个附加程序中)。将其最低级别设置为Info 或其他任何值。请参阅http://logging.apache.org/log4net/release/manual/configuration.html 中的过滤器部分

    然后,在升级阶段之前,编辑配置文件并将过滤器的最低级别更改为,例如,Debug

    升级完成后,将过滤器的最低级别设置回其原始值。

    【讨论】:

      【解决方案3】:

      This question discussed dynamic reconfiguration of Log4Net loggers,它应该为您提供所需的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-21
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        相关资源
        最近更新 更多