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");
我在每个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");