如何使用log4net知道当前日志级别存储在数据库中

发布于 2024-12-10 07:39:30 字数 41 浏览 0 评论 0原文

如何使用 log4net 知道当前日志级别存储在应用程序的数据库中。

How to Know the current log level using log4net to store in database in an application.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半仙 2024-12-17 07:39:31

如果您的意思是启用的级别,那么:

bool IsDebugEnabled { get; }
bool IsInfoEnabled { get; }
bool IsWarnEnabled { get; }
bool IsErrorEnabled { get; }
bool IsFatalEnabled { get; }

如果所有这些都为真,那么级别将为调试,如果启用了信息及以上级别,则它是信息,所以..

您可以像这样检查

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

If you mean the enabled levels then:

bool IsDebugEnabled { get; }
bool IsInfoEnabled { get; }
bool IsWarnEnabled { get; }
bool IsErrorEnabled { get; }
bool IsFatalEnabled { get; }

if all of them are true then the level would be Debug, if Info and above is enabled then it is info and so ..

you can check like this

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";

You can also get the specific level by this:

((log4net.Repository.Hierarchy.Logger)mylogger.Logger).Level
韵柒 2024-12-17 07:39:31

对于任何实现 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;        
        }
    }
}

I solve the issue like this for anything implementing ILogger in this case you would have a local property called Logger that is an implementation of 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;        
}

You could also create a extension method in the ILogger namespace so that anywhere you use ILogger you have the functionality.

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;        
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文