Nlog 控制台目标无法单声道工作?

Nlog console target not working mono?

我有一个非常简单的控制台应用程序。我在控制台目标中添加了 Nlog,但在单声道 运行 时(在 windows 和 ubuntu 上)我无法让它工作。我试过文件目标并且它有效。 我错过了什么?

代码

class Program
{
    private static Logger logger = LogManager.GetCurrentClassLogger();
    static void Main(string[] args)
    {
        Type t = Type.GetType("Mono.Runtime");
        if (t != null)
            Console.WriteLine("You are running with the Mono VM");
        else
            Console.WriteLine("You are running something else");

        Console.WriteLine("Lets go Mono");
        logger.Trace("Sample trace message");
        logger.Debug("Sample debug message");
        logger.Info("Sample informational message");
        logger.Warn("Sample warning message");
        logger.Error("Sample error message");
        logger.Fatal("Sample fatal error message");
    }
}

配置

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <targets async="true">
    <target name="console" xsi:type="Console"/>
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="console" />
  </rules>
</nlog>

Nlog包

 <package id="NLog" version="4.3.10" targetFramework="net452" />

您的代码和配置看起来有效。

使用 NLog 4.3.10 的 Mono 上的控制台目标存在问题,which will be fixed in 4.3.11。由于 Environment.UserInteractive 在 Mono

上无法正常工作,因此检测控制台是否可用无法正常工作

现在为 Mono 设置 detectConsoleAvailable="false",所以:

<target name="console" xsi:type="Console" detectConsoleAvailable="false"/>