2010-11-19 28 views
1

我在我的应用程序中选择了几个地方,我想总是日志值。我可以简单地使用Log.Info()并将其留在那里,但我更喜欢一个无法通过意外更改级别配置来禁用的解决方案。在这种情况下,只要log4net未被禁用,我希望这些日志语句触发。log4net的使用总是记录一个值

什么是最好的方法?

只是看着someinformation它看起来像一个选项是创建一个值设置为紧急以上的自定义级别,但我不知道这是一个残酷的黑客副作用我没有意识到或合法选项。我无法在文档中找到任何明确的指导。

+0

你试过我的回答吗?它有帮助吗? – wageoghe 2010-12-08 17:45:34

回答

0

我不是一个log4net的专家,但这样的事情可能会做你想要什么:

此代码将得到LogManager的指定logger,将编程设置其级别为“ALL”。如果稍后在代码中检索此记录器,即使日志级别在配置文件中设置为OFF,它也会始终记录日志。

要测试,设置根日志级别的配置文件“OFF”,然后输入如下代码:

log4net.ILog log = log4net.LogManager.GetLogger("abc"); 
    log.Info("this won't log because root logger is OFF"); 

    //Reset the level 
    log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)log.Logger; 

    l.Level = l.Hierarchy.LevelMap["ALL"]; 

    //Try to log again 
    log.Info("this will log because we just reset abc's level to ALL"); 

我测试,它似乎工作。

我发现这个信息herehere