log4net:动态指定日志级别

本文关键字:日志 动态 log4net | 更新日期: 2023-09-27 18:27:38

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

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

如何在log4net中以简单方便的方式做到这一点?

log4net:动态指定日志级别

您可以使用扩展方法来扩展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) ....
}

然而,通常情况下,您会调整记录器以从特定日志级别获取消息,而不会更改代码中正在记录的级别。如果您正在更改级别,您可以更好地将所有消息记录在致命级别。