【问题标题】:Logging minlevel to log file将 minlevel 记录到日志文件
【发布时间】:2019-01-11 16:33:41
【问题描述】:

这似乎是一件容易的事,而且是一个共同的愿望,但我很好奇有一个好的方法来做到这一点。我想在启动时将特定记录器的最小级别写入其日志文件。我经常查看日志并试图记住我是如何离开该应用程序的日志级别的,而无需挖掘 NLog.config 文件。我想要一个看起来像这样的日志条目:

2018-08-03 09:38:23.7975 |信息 |从日志级别开始设置为: 调试

我可以看到我应该能够像这样访问 LoggingConfiguration:

NLog.LogManager.Configuration

但是我如何访问规则和 minlevel 呢?还有其他建议吗?除了the NLog Tutorial,如果你能推荐一些好的NLog资源,我将不胜感激。

【问题讨论】:

  • 检查logger.IsTraceEnabled是否为真,如果不是,检查IsDebugEnabled是否为真,如果不是,检查IsInfoEnabled是否...?

标签: c# nlog


【解决方案1】:

感谢您的 cmets 和答案。 Severius5,您的答案(现在已删除?)给了我我的答案。这段代码可以满足我的需要:

        var rules = NLog.LogManager.Configuration.LoggingRules;
        var rule = rules.FirstOrDefault(x => x.LoggerNamePattern == "hostLogger");
        NLog.LogManager.GetLogger("hostLogger").Info("Minimum Log Level: {0}", rule.Levels.Min());

它在日志中给了我这个输出:

2018-08-03 14:26:11.7439 |信息 |最低日志级别:调试

【讨论】:

  • 您关于否决票的 cmets 应该是问题上的 cmets。它们并不是你答案的一部分。
  • 在关于否决票的旁注中,这是我的第一个 SO 问题,如果知道将来如何改进我的问题,我将不胜感激。在这里发布问题有点令人生畏,鉴于第一个回应是反对票,我不想再问了。 (感谢您的 cmets,@Amy。)
  • 好吧,我的意思是这个问题,但不管你的答案现在有了很大改善,而且它的价值,我不知道你为什么被否决。不过我不会把它当作个人的。
【解决方案2】:

可能是这样的:

var logger = NLog.LogManager.GetLogger("hostLogger");
var minLogLevel = "Disabled";
if (logger.IsTraceEnabled)
    minLogLevel = "Trace";
else if (logger.IsDebugEnabled)
    minLogLevel = "Debug";
else if (logger.IsInfoEnabled)
    minLogLevel = "Info";
else if (logger.IsWarnEnabled)
    minLogLevel = "Warn";
else if (logger.IsErrorEnabled)
    minLogLevel = "Error";
else if (logger.IsFatalEnabled)
    minLogLevel = "Fatal";
logger.Info("Minimum Log Level: {0}", minLogLevel)

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多