Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Nlog未记录正确的记录器';姓名_C#_.net_Nlog - Fatal编程技术网

C# Nlog未记录正确的记录器';姓名

C# Nlog未记录正确的记录器';姓名,c#,.net,nlog,C#,.net,Nlog,我在每个类中实例化记录器,我想这样记录 private static Logger logger = LogManager.GetCurrentClassLogger(); 然后,我创建了一个静态类,其中包含多个帮助函数,用于记录日志并传递logger对象 一个简单的例子: public static void LogMessage(Logger logger, LogLevel logLevel, string message) { StringBuilder

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

private static Logger logger = LogManager.GetCurrentClassLogger();
然后,我创建了一个静态类,其中包含多个帮助函数,用于记录日志并传递logger对象

一个简单的例子:

    public static void LogMessage(Logger logger, LogLevel logLevel, string message)
    {
        StringBuilder logMessage = new StringBuilder();
        logMessage.AppendLine("Message: " + message);
        logger.Log(logLevel, logMessage);
    }
问题是,即使我在另一个类中创建了记录器,它也会记录当前类(静态类)的名称。我可以在属性列表中看到记录器的名称,并且在调用log方法时它具有正确的名称(它被实例化的类的名称)。我试图将记录器作为ref传递,但它做了同样的事情


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

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

  • 只需为每个类创建一个静态记录器,即
  • 使用
    LogManager.GetLogger(“loggername”)
    并传递您的姓名,或
  • 使用NLog中包含的fluent日志记录,请参阅,或
  • 在:
    LogTo.Debug(“TheMessage”)中使用静态类

不是答案,但听起来您可以很容易地将其转换为一个日志,这样您就可以执行
logger.LogMessage(INFO,“msg”)而不是
which.LogMessage(记录器,