Nlog 没有记录正确的记录器名称

Nlog not logging the correct logger's name

我在每个class中实例化记录器我想这样记录

private static Logger logger = LogManager.GetCurrentClassLogger();

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

一个简单的例子:

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

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

有谁知道为什么会这样?

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

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