C# 未创建Nlog日志文件

C# 未创建Nlog日志文件,c#,nlog,C#,Nlog,我正在尝试在控制台应用程序中记录异常。我一如既往地做了每件事(然后它对我起了作用……): NLog.config: 由于某种神秘的原因,我的电脑上从来没有创建过任何文件。你知道为什么你的配置看起来有效吗,所以这不应该是问题所在 一些需要检查的事项: 您的nlog.config目录是否正确?最好的测试方法是使用.dll或.exe将nlog.config复制到目录中 启用异常以确保Nlog不会捕获错误:throweExceptions=“true” 通过设置internalLogLevel=“I

我正在尝试在控制台应用程序中记录异常。我一如既往地做了每件事(然后它对我起了作用……):

NLog.config:



由于某种神秘的原因,我的电脑上从来没有创建过任何文件。你知道为什么你的配置看起来有效吗,所以这不应该是问题所在

一些需要检查的事项:

  • 您的nlog.config目录是否正确?最好的测试方法是使用.dll或.exe将nlog.config复制到目录中

  • 启用异常以确保Nlog不会捕获错误:
    throweExceptions=“true”

  • 通过设置
    internalLogLevel=“Info”
    并选中“c:\temp\nlog internal.log”来检查内部日志


  • 有关疑难解答的完整教程可以在上找到。

    编辑
    NLog
    配置,像这样更改日志文件路径,使用
    ${shortdate}
    代替
    {date:format=yyyyymmdd}
    。在规则中设置名称,并像在本示例中那样调用它

     <?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">
        <targets>
          <target name="LogFile" xsi:type="File"
                  fileName="${basedir}/Log/${shortdate}myLog.txt"
                  layout="${longdate}|${level:uppercase=true}|${message}|${exception}" />
        </targets>
    
        <rules>
          <logger name="ErrorLog" minlevel="Trace" writeTo="LogFile" />
        </rules>
    </nlog>
    

    在Visual Studio中,检查NLog.config文件是否具有以下属性: 构建操作:内容。 复制到输出目录=如果较新,则复制

    我附上一个屏幕截图,你可以看到它应该如何出现。对不起,是西班牙语的


    因此,您建议从基于类的日志记录切换到命名日志记录-这不应该是这里的问题,因为。。。此外,您的命名不匹配:
    ErrorFile
    vs
    ErrorLog
    。这是唯一一个运行良好的示例,我建议更改文件名路径、部分日期格式和更改跟踪级别以记录所有内容。
     <?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">
        <targets>
          <target name="LogFile" xsi:type="File"
                  fileName="${basedir}/Log/${shortdate}myLog.txt"
                  layout="${longdate}|${level:uppercase=true}|${message}|${exception}" />
        </targets>
    
        <rules>
          <logger name="ErrorLog" minlevel="Trace" writeTo="LogFile" />
        </rules>
    </nlog>
    
        class Program
    {
    
        private Logger ErrorLogger = NLog.LogManager.GetLogger("ErrorLog");
    
        static void Main(string[] args)
        {
            ErrorLogger.Error("test");
        }
    }