如何了解使用log4net存储在数据库中的当前日志级别
本文关键字:数据库 日志 存储 何了解 了解 log4net | 更新日期: 2023-09-27 18:11:48
如何了解应用程序使用log4net在数据库中存储的当前日志级别
如果你指的是启用的级别,那么:
bool IsDebugEnabled { get; }
bool IsInfoEnabled { get; }
bool IsWarnEnabled { get; }
bool IsErrorEnabled { get; }
bool IsFatalEnabled { get; }
如果它们都为真,那么级别将是Debug,如果Info及以上是启用的,那么它是Info,等等。
你可以像这样检查
if(myLogger.IsDebugEnabled)
return "Debug";
else if(myLogger.IsInfoEnabled)
return "Info";
else if(myLogger.IsWarnEnabled)
return "Warn";
else if(myLogger.IsErrorEnabled)
return "Error";
else if(myLogger.IsFatalEnabled)
return "Fatal";
else
return "None";
您还可以通过以下方式获得具体级别:
((log4net.Repository.Hierarchy.Logger)mylogger.Logger).Level
我像这样解决任何实现ILogger的问题,在这种情况下,您将有一个名为Logger的本地属性,它是ILogger的实现。
public LogLevel GetLogLevel()
{
var levels=new []{LogLevel.Critical, LogLevel.Error, LogLevel.Warning, LogLevel.Information,LogLevel.Debug,LogLevel.Trace};
foreach (var level in levels)
{
if (Logger.IsEnabled(level))
return level;
}
return LogLevel.None;
}
您还可以在ILogger名称空间中创建一个扩展方法,以便在使用ILogger的任何地方都具有该功能。
namespace Microsoft.Extensions.Logging
{
public static class LoggerExtension
{
/// <summary>
/// Gets the current log level
/// </summary>
/// <param name="logger"></param>
/// <returns>The most restrictive LogLevel that is used</returns>
public static LogLevel GetLogLevel(this ILogger logger)
{
if (logger is null)
{
throw new System.ArgumentNullException(nameof(logger));
}
var levels=new []{LogLevel.Critical, LogLevel.Error, LogLevel.Warning, LogLevel.Information,LogLevel.Debug,LogLevel.Trace};
foreach (var level in levels)
{
if (logger.IsEnabled(level))
return level;
}
return LogLevel.None;
}
}
}