C# log4net覆盖xml配置?

C# log4net覆盖xml配置?,c#,log4net,log4net-configuration,C#,Log4net,Log4net Configuration,我使用的是通过配置文件配置的log4net。有一种情况,我希望所有东西都记录在debug中(升级过程中使用的一些代码)。我是否可以获取当前日志记录级别,将其设置为调试,运行指定的代码,然后返回到以前的状态?这里有一个想法: 仅使用log4net配置文件。将“watch”标志设置为true,以便观看 在此配置文件中,设置日志过滤器(在每个附录中)。将其最小级别设置为,例如,Info或其他任何值。请参见中的“过滤器”部分 然后,在升级阶段之前,编辑配置文件并将过滤器的最小级别更改为,例如,Debug

我使用的是通过配置文件配置的log4net。有一种情况,我希望所有东西都记录在debug中(升级过程中使用的一些代码)。我是否可以获取当前日志记录级别,将其设置为调试,运行指定的代码,然后返回到以前的状态?

这里有一个想法:

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

在此配置文件中,设置日志过滤器(在每个附录中)。将其最小级别设置为,例如,
Info
或其他任何值。请参见中的“过滤器”部分

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


升级完成后,将筛选器的最小级别设置回其原始值。

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

 <logger name="MyApp.DebugLogging" additivity="false">
        <level value="DEBUG"/>
        <appender-ref ref="MainLog"/>
    </logger
并将代码块中的变量用作

 debuglog .Debug(ex);

这里的想法是,您应该能够在配置文件中创建不同的记录器,然后可以灵活地选择在代码块中使用哪个记录器,这将为您提供所需的信息。

这是一个很好的解决方案。然而,我宁愿使用现有的记录器,而不是仅仅为所描述的过程创建一个新的记录器。为什么?因为如果您正确使用日志记录基础结构,您应该已经在每个记录器中使用了
Debug
方法。仅在配置文件中更改日志记录级别(或过滤器,无论什么),您就可以查看
Debug
级别,而无需向系统添加任何新代码。新代码需要更多的维护和更多的潜在错误。
 debuglog .Debug(ex);