NLog没有显示任何内容?

时间:2017-02-26 05:27:11

标签: c# nlog

出于一些奇怪的原因,当我写入控制台时,nlog没有显示任何内容,在Program.cs的Main()方法中我分配了nlog.config:

LogManager.Configuration = new XmlLoggingConfiguration("assets/packages/nlog/nlog.config");

这是Config:

<nlog throwExceptions="true">
  <targets>
    <target name="file" type="File" fileName="${basedir}/assets/logging/log.txt" />
  </targets>
  <rules>
    <logger name="*" minLevel="Info" writeTo="File" />
  </rules>
</nlog>

以下是一个示例类:

private static readonly ILogger Logger = LogManager.GetCurrentClassLogger();

public MyClass()
{
    Console.Write("lol");
    Logger.Debug("Debug test...");
    Logger.Error("Debug test...");
    Logger.Fatal("Debug test...");
    Logger.Info("Debug test...");
    Logger.Trace("Debug test...");
    Logger.Warn("Debug test...");
}

我知道正在调用该方法,因为我得到&#34; lol&#34;,而不是控制台上的实际日志,但是它会写入/assets/logging/log.txt文件。

4 个答案:

答案 0 :(得分:5)

要在控制台上查看日志输出,您必须为此添加目标和规则:

<?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>
        <target name="logfile" xsi:type="File" fileName="file.txt" />
        <target name="console" xsi:type="Console" />
    </targets>

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

通过创建一个简单的Logger类,您的示例适用于我(使用上面的配置文件)

class MyLoggerClass
{
    public static Logger Logger = LogManager.GetCurrentClassLogger();
}

class MyClass
{
    static void Main(string[] args)
    {

        Console.Write("lol");
        MyLoggerClass.Logger.Debug("Debug test...");
        MyLoggerClass.Logger.Error("Debug test...");
        MyLoggerClass.Logger.Fatal("Debug test...");
        MyLoggerClass.Logger.Info("Debug test...");
        MyLoggerClass.Logger.Trace("Debug test...");
        MyLoggerClass.Logger.Warn("Debug test...");
    }
}

或者您可以直接在课堂上使用Logger:

class MyClass
{
    private static Logger Logger = LogManager.GetCurrentClassLogger();
    static void Main(string[] args)
    {
        Console.Write("lol");
        Logger.Debug("Debug test...");
        Logger.Error("Debug test...");
        Logger.Fatal("Debug test...");
        Logger.Info("Debug test...");
        Logger.Trace("Debug test...");
        Logger.Warn("Debug test...");
    }
}

log.txt的输出:

2017-02-26 16:13:44.8388|ERROR|NLogTest.Program|Debug test...
2017-02-26 16:13:44.8856|FATAL|NLogTest.Program|Debug test...
2017-02-26 16:13:44.8856|INFO|NLogTest.Program|Debug test...
2017-02-26 16:13:44.8971|WARN|NLogTest.Program|Debug test...

答案 1 :(得分:2)

basedir是相对于.exe

在这种情况下,它可能位于bin \ debug \ assets \ logging \ log.txt

答案 2 :(得分:2)

您还需要将数据发送到控制台。 添加另一个发送到控制台的目标,如下所示: documentation

我认为您还应该将该目标放在rulesloggerwriteTo以及File

答案 3 :(得分:0)

如果这仍然是您的问题,请检查一下,我复制并粘贴了所有必要的代码和配置,但是直到我完成此操作后才解决

NLog doen't work on IIS

将“复制到输出目录”设置为“始终复制”