当前位置:  开发笔记 > 编程语言 > 正文

在log4net中以编程方式更改日志级别?

如何解决《在log4net中以编程方式更改日志级别?》经验,为你挑选了2个好方法。

有没有办法以编程方式在log4net中设置日志级别?我假设有一个属性可以让你这样做,但我似乎找不到一个.

我想要做的是有一个可配置选项进入调试模式.这会导致额外的记录.

我正在使用单独的log4net配置xml文件.目前我提出的解决方案如下:

    使用dom编辑日志文件,然后调用XMLConfigurator根据文件配置日志文件.

    有两个日志配置文件,并在选项更改调用xml Configurator上使用相应的日志配置文件.

我倾向于2,有什么理由不行吗?



1> Eddie..:

您可以以编程方式更改log4net记录器的日志记录级别,但是如何执行此操作并不明显.我有一些代码可以做到这一点.鉴于此记录器:

private readonly log4net.ILog mylogger;

您必须执行以下花哨的步法将其设置为Debug:

((log4net.Repository.Hierarchy.Logger)mylogger.Logger).Level = log4net.Core.Level.Debug;


更改记录器(或根记录器)的级别比更改特定appender的级别要好得多.+1我做了类似的事情,但将它抽象为RuntimeLoggingHelper.SetLoggerLevel(Type(或字符串名称重载),Level).

2> Millhouse..:

这是我以编程方式配置log4net的方式:

//declared as a class variable   
private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

 PatternLayout layout = new PatternLayout(@"%date %-5level %message%newline");
    RollingFileAppender appender = new RollingFileAppender();
    appender.Layout = layout;
    appender.File = "c:\log.txt";
    appender.AppendToFile = true;
    appender.MaximumFileSize = "1MB";
    appender.MaxSizeRollBackups = 0; //no backup files
    appender.Threshold = Level.Error;
    appender.ActivateOptions();                       
    log4net.Config.BasicConfigurator.Configure(appender);

我认为Appender的Threshold属性是你要找的,它将控制appender输出的日志记录级别.

log4net 手册有很多很好的配置示例.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有