Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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#_Nlog - Fatal编程技术网

C# 无法使用NLog创建日志

C# 无法使用NLog创建日志,c#,nlog,C#,Nlog,我有一个.NET应用程序。我正在尝试使用NLog编写一些日志。我的应用程序非常基本,运行成功,没有引发异常。但是,我在任何地方都看不到实际的日志文件。我如何才能让我的日志真正写入 MyLogger.cs using NLog; public class MyLogger { private static Logger logger = LogManager.GetCurrentClassLogger(); public void Log(string message) {

我有一个.NET应用程序。我正在尝试使用NLog编写一些日志。我的应用程序非常基本,运行成功,没有引发异常。但是,我在任何地方都看不到实际的日志文件。我如何才能让我的日志真正写入

MyLogger.cs

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

  public void Log(string message)
  {
    logger.Info(message);
  }
}
static class Program
{
  static void Main()
  {
    var logger = new MyLogger();
    logger.Log("hello");
  }
}
Program.cs

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

  public void Log(string message)
  {
    logger.Info(message);
  }
}
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将日志写入文本文件


谢谢大家!

确保创建了文件夹“C:/logs”日志,并且应用程序可以在其中读写。您可能只对C驱动器根目录中的
用户
组具有只读访问权限。如果将日志路径设置为
C:/Users/,则可以对其进行测试,确保创建了文件夹“C:/logs”日志,并且应用程序可以在其中进行读写操作。您可能只对C驱动器根目录中的
用户
组具有只读访问权限。如果您将日志路径设置为
C:/Users/,则可以对其进行测试。这不会直接解决问题,但会帮助您找出它不起作用的原因。

通过将其添加到配置文件来启用:

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

将该文件记录到驱动器的根目录中,以减少出现权限问题的可能性。如果仍然失败,请在调试选项中确保所有内容都中断,如果启用了“我的代码”,则只删除它。也许那会有帮助


注意:一旦日志记录起作用,不要忘记关闭它,因为它是一个重要的功能™ 关注性能。

这不会直接解决问题,但会帮助您找出问题的原因。

通过将其添加到配置文件来启用:

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

将该文件记录到驱动器的根目录中,以减少出现权限问题的可能性。如果仍然失败,请在调试选项中确保所有内容都中断,如果启用了“我的代码”,则只删除它。也许那会有帮助


注意:一旦日志记录起作用,不要忘记关闭它,因为它是一个重要的功能™ 点击性能。

这是编码。它想要的是“utf-8”而不是“Utf8”

这是编码。它想要的是“utf-8”而不是“Utf8”

您是否尝试在路径中使用正斜杠
fileName=“C:/Logs/MyApp.log”
我确实尝试过在路径中使用前斜杠。但是,这仍然不起作用。Windows事件日志中是否有任何相关信息?另外,“c:\logs”是否已经存在?@NineTails-我在Windows事件日志中没有看到任何消息。C:\Logs目录确实存在。@Tipx帮助我解决了这个问题。问题在于编码。我不得不将编码更改为
utf-8
您是否尝试在路径中使用前斜杠
fileName=“C:/Logs/MyApp.log”
我确实尝试过在路径中使用前斜杠。但是,这仍然不起作用。Windows事件日志中是否有任何相关信息?另外,“c:\logs”是否已经存在?@NineTails-我在Windows事件日志中没有看到任何消息。C:\Logs目录确实存在。@Tipx帮助我解决了这个问题。问题在于编码。我不得不将编码改为utf-8,非常感谢。这帮我修好了。这成功地创建了log.txt文件。这让我发现目标上的“encoding”属性不正确。我把编码改为“utf-8”,它成功了!非常感谢你。这帮我修好了。这成功地创建了log.txt文件。这让我发现目标上的“encoding”属性不正确。我把编码改为“utf-8”,它成功了!