无法使用NLog创建日志

时间:2018-04-20 14:36:59

标签: c# nlog

我有一个.NET应用程序。我试图用NLog编写一些日志。我的应用程序是非常基本的,并且成功运行而不会抛出异常。但是,我没有在任何地方看到实际的日志文件。如何让我的日志实际写入?

MyLogger.cs

using NLog;
public class MyLogger
{
  private static Logger logger = LogManager.GetCurrentClassLogger();

  public void Log(string message)
  {
    logger.Info(message);
  }
}

Program.cs的

static class Program
{
  static void Main()
  {
    var logger = new MyLogger();
    logger.Log("hello");
  }
}

我已在App.config文件中添加了NLog配置详细信息,如下所示:

的App.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
  </configSections>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>

  <appSettings>
  </appSettings>

  <nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="logFile" xsi:type="File" fileName="C:\Logs\MyApp.log" keepFileOpen="true" encoding="Utf8" layout="${longdate} ${logger} ${message}${exception:format=ToString}"></target>
    </targets>

    <rules>
      <logger name="*" minlevel="Info" writeTo="logFile" />
      <logger name="*" minlevel="Warn" writeTo="logFile" />
    </rules>
  </nlog>  
</configuration>

我没有使用NLog.config文件。我的印象是我可以将我的整个配置设置放在App.config文件中。我错过了什么?如何使用NLog将日志写入文本文件?

谢谢!

3 个答案:

答案 0 :(得分:1)

这不会直接解决问题,但会帮助您弄清楚它无法正常工作的原因。

Internal Logging添加到配置文件中,打开Github

<nlog internalLogFile="c:\log.txt" internalLogLevel="Trace">

将该文件记录到驱动器的根目录,以减少发出权限的可能性。如果仍然失败,请在调试选项中确保中断所有操作,并删除仅我的代码(如果已启用)。也许这会有所帮助。

注意:一旦记录有效,请不要忘记将其关闭,因为重要™会影响性能。

答案 1 :(得分:1)

它是编码。它想要&#34; utf-8&#34;不是&#34; Utf8&#34;

答案 2 :(得分:0)

确保文件夹&#34; C:/ logs&#34;创建了日志,应用程序可以在那里进行读写操作。您可能只对C驱动器根目录中的Users组具有只读访问权限。如果将日志路径设置为C:/Users/<your_username/test.log

,则可以对其进行测试

要自动创建文件夹,请使用以下配置。

<target xsi:type="File"
    ...
    createDirs="true" />