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

Logging 检查是否设置了特定级别,如果设置了,请登录该级别,logging,log4net,Logging,Log4net,我正在尝试为log4net编写一些扩展方法,其中一个要求是用户可以指定希望将消息记录在哪个级别 现在,我希望能够检查我的log4net记录器中是否启用了该级别 我知道我可以查 ILog log=LogManager.GetLogger(…); if(log.IsDebugEnabled) { //记录某事 } 但是,如果给定一个log4net.Core.Level变量,是否有方法检查该级别是否已启用 所以我希望可能会有这样的情况: ILog log=LogManager.GetLogger(…

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

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

我知道我可以查

ILog log=LogManager.GetLogger(…);
if(log.IsDebugEnabled)
{
//记录某事
}
但是,如果给定一个
log4net.Core.Level
变量,是否有方法检查该级别是否已启用

所以我希望可能会有这样的情况:

ILog log=LogManager.GetLogger(…);
log4net.Core.Level myLevel=Level.Warn;
if(log.IsLevelEnabled(myLevel))
{
//记录某事
log.log(myLevel,message);
}
有办法做到这一点吗

解决方案:
提及的对等方
隐藏在其中一条注释中-如何执行此操作:


但是,您可以获得记录器实现:
log.logger.isenablefor()…
log.logger.log(…)
可以帮助您,而
log
函数不打算直接使用

因此,现在我可以轻松使用:

if(log.Logger.IsEnabledFor(myLevel))
{
//记录某事
}

您可以为ILog创建扩展方法:

公共静态类Log4NetExtensionMethods
{
公共静态bool IsLevelEnabled(此ILog日志,log4net.Core.Level)
{
...
}
公共静态void LogAtLevel(此ILog日志,log4net.Core.Level,字符串消息)
{
...
}
}

是的-当然可以-我只是希望类似的东西可能已经在log4net中提供了…您只有ILog接口,它来自于您的LogManager,而且非常简单。此时没有任何内容可以帮助您。但是,您可以获得记录器实现:log.logger.IsEnabledFor()。。。而log.Logger.log(…)可以帮助您,日志功能不是直接使用的。啊!这正是我要找的-
log.Logger.isenablefor(level)
-谢谢!!