检查是否设置了特定级别,如果是,请登录该级别

时间:2013-03-27 13:12:42

标签: logging log4net

我正在尝试为log4net编写一些扩展方法,其中一个要求是用户可以指定他希望扩展程序在哪个级别上记录消息。

现在,我希望能够检查我的log4net记录器中是否启用了该级别。

我知道我可以查看

ILog log = LogManager.GetLogger(....);

if(log.IsDebugEnabled) 
{
   // log something
}

但是有一种方法,给定一个log4net.Core.Level变量来检查该级别是否已启用?

所以我希望可能有类似的东西:

ILog log = LogManager.GetLogger(....);
log4net.Core.Level myLevel = Level.Warn;

if(log.IsLevelEnabled(myLevel))
{
   // log something
   log.Log(myLevel, message);
}

有办法做到这一点吗?

解决方案: peer - 隐藏在其中一条评论中 - 如何执行此操作:

  

但是,您可以获得记录器实现:log.Logger.IsEnabledFor()... log.Logger.Log(...)可以帮助您,Log函数不能直接使用。

所以现在我可以轻松使用:

if(log.Logger.IsEnabledFor(myLevel)) 
{
   // log something 
}

1 个答案:

答案 0 :(得分:2)

您可以为Log:

制作扩展方法
public static class Log4NetExtensionMethods
{
    public static bool IsLevelEnabled( this ILog log, log4net.Core.Level level)
    {
        ...
    }

    public static void LogAtLevel( this ILog log, log4net.Core.Level level, string message)
    {
        ...
    }
}