log4net:动态指定日志级别

时间:2014-10-22 15:40:07

标签: c# .net log4net

而不是log.Debug(...)log.Info(...)我想写这样的代码:

var logLevel = GetLogLevel(); // Returns something like DEBUG or INFO
log.Log(logLevel, ...);

如何以简单方便的方式在log4net中执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以使用扩展方法扩展ILog:

public static Level GetLogLevel(this ILog log)
{
     if (log.IsEnabledFor(Level.Debug)) { return Level.Debug; }
     else ....
}

public static void Log(this ILog log, Level level, ...)
{
    switch(level) ....
}

但是,通常您会调整记录器以从特定日志级别获取消息,而不是更改代码中记录的级别。如果要更改级别,则可以更好地记录致命级别的所有邮件。