【问题标题】:Nlog not logging the correct logger's nameNlog 没有记录正确的记录器名称
【发布时间】:2016-04-06 14:06:36
【问题描述】:

我在每个我想像这样记录的类中实例化记录器

private static Logger logger = LogManager.GetCurrentClassLogger();

然后我创建了一个带有多个辅助函数的静态类,用于记录传递记录器对象。

一个简单的例子:

    public static void LogMessage(Logger logger, LogLevel logLevel, string message)
    {
        StringBuilder logMessage = new StringBuilder();
        logMessage.AppendLine("Message: " + message);
        logger.Log(logLevel, logMessage);
    }

问题是即使我在另一个类中创建了记录器,它也会记录当前类的名称(静态类)。我可以在属性列表中看到记录器的名称,并且在调用 log 方法时它具有正确的名称(它被实例化的类的名称)。我试图将记录器作为参考传递,但它做同样的事情。

有人知道为什么会这样吗?

【问题讨论】:

  • 不是答案,但听起来您可以很容易地将其转换为extension method,因此您可以只使用logger.LogMessage(INFO, "msg"); 而不是Whatever.LogMessage(logger, ...

标签: c# .net nlog


【解决方案1】:

这是预期的行为。有一些解决方案:

  • 只需为每个类创建一个静态记录器,即recommend,或者
  • 使用LogManager.GetLogger("loggername") 并传递您的姓名,或者
  • 使用 NLog 中包含的流畅日志记录,请参阅news post,或
  • 使用Fody Anotar中的静态类:LogTo.Debug("TheMessage");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多