2

log4netの拡張メソッドをいくつか書き込もうとしていますが、1つの要件は、ユーザーが拡張機能にメッセージをログオンさせるレベルを指定できることです。

ここで、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言及-コメントの1つに隠されています-これを行う方法:

ただし、ロガーの実装を取得することはできます。log.Logger.IsEnabledFor()...またlog.Logger.Log(...)、このLog関数を直接使用することを目的としたものではありません。

だから今私は簡単に使うことができます:

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

1 に答える 1

2

ILogの拡張メソッドを作成できます。

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)
    {
        ...
    }
}
于 2013-03-27T13:59:41.590 に答える