Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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# asp.net core的NLog未筛选Microsoft日志_C#_Nlog_Asp.net Core 2.1 - Fatal编程技术网

C# asp.net core的NLog未筛选Microsoft日志

C# asp.net core的NLog未筛选Microsoft日志,c#,nlog,asp.net-core-2.1,C#,Nlog,Asp.net Core 2.1,我在ASP.NET Core 2.1项目中有以下nlog.config文件。不过,它会将来自每个记录器(包括Microsoft logger)的消息记录到控制台 <?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"

我在ASP.NET Core 2.1项目中有以下
nlog.config
文件。不过,它会将来自每个记录器(包括Microsoft logger)的消息记录到控制台

<?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"
      autoReload="true"
      internalLogLevel="Error"
      internalLogFile="${specialfolder:folder=UserProfile}\nlog\internal-nlog.txt">

  <variable name="fullLayout" value="${shortdate}  [${uppercase:${level}}]  ${logger}: ${message}  ${exception:format=tostring}  url: ${aspnet-request-url}" />

  <!-- enable asp.net core layout renderers -->
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>

  <!-- the targets to write to -->
  <targets>
    <!-- write to console -->
    <target name="console" xsi:type="ColoredConsole" layout="${fullLayout}" />

    <!-- write to file -->
    <target xsi:type="File"
            name="allfile"
            fileName="${defaultDirectory}/test-api-all.log"
            archiveEvery="Day"
            archiveFileName="${defaultDirectory}/test-api-all-${#}.log"
            archiveNumbering="Date"
            archiveDateFormat="yyyy-MM-dd"
            maxArchiveFiles="5"
            layout="${fullLayout}" />

    <!-- another file log, only own logs. Uses some ASP.NET core renderers -->
    <target xsi:type="File"
            name="ownFile-web"
            fileName="${defaultDirectory}/test-api-app.log"
            archiveEvery="Day"
            archiveFileName="${defaultDirectory}/test-api-app-${#}.log"
            archiveNumbering="Date"
            archiveDateFormat="yyyy-MM-dd"
            maxArchiveFiles="5"
            layout="${fullLayout}" />
  </targets>

  <!-- rules to map from logger name to target -->
  <rules>
    <!--All logs, including from Microsoft-->
    <logger name="*" minlevel="Trace" writeTo="console" />

    <!--Skip non-critical Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" maxLevel="Info" final="true" />
    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
  </rules>
</nlog>
如何筛选Microsoft日志

编辑:

第二天,在我没有做任何更改的情况下,上述配置开始正常工作:O

也许这样可以:

  <!-- rules to map from logger name to target -->
  <rules>
    <!--Skip non-critical Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" maxLevel="Info" final="true" />

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

    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
  </rules>

日志规则的顺序很重要,因为这些规则是从顶部匹配的。另请参见

也许这会起作用:

  <!-- rules to map from logger name to target -->
  <rules>
    <!--Skip non-critical Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" maxLevel="Info" final="true" />

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

    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
  </rules>


日志规则的顺序很重要,因为这些规则是从顶部匹配的。另请参见日志规则的顺序似乎是正确的。我建议尝试再次检查更新的
nlog.config
文件是否正在复制到生成目录(例如
\bin\Debug\netcoreapp2.1\nlog.config


我也遇到了同样的问题,但发现使用VisualStudio进行调试时,它有时并没有真正将
nlog.config
文件复制到构建目录中。因此,解决方案是先清理项目,然后构建,最后调试。

日志规则的顺序似乎是正确的。我建议尝试再次检查更新的
nlog.config
文件是否正在复制到生成目录(例如
\bin\Debug\netcoreapp2.1\nlog.config


我也遇到了同样的问题,但发现使用VisualStudio进行调试时,它有时并没有真正将
nlog.config
文件复制到构建目录中。因此,解决方案是先清理项目,然后构建,最后调试。

不知何故,我的原始配置第二天就开始正常工作了。。。我对你的答案投了赞成票,谢谢你花时间来帮助我:)我从来没有完全理解过“微软。*”这个词。。评论说,它用于跳过非关键的Microsoft日志,但xml看起来却在做相反的事情?当然,设置maxLevel=“Info”意味着您将得到所有不需要的废话,并且没有任何警告/错误/严重日志记录?@Murphybro2日志记录规则是自上而下评估的。但是标有
final=“true”
的日志记录规则将阻止LogEvents进一步访问其他规则。因此,第一条规则将匹配名称以“Microsoft”开头且日志级别为Info(或不太严重)的任何记录器。由于
final=“true”
的原因,它将阻止该输出到达其他规则,并且该输出将被丢弃,因为第一个规则没有
writeTo
。另请参见:不知何故,我的原始配置第二天就开始正常工作了。。。我对你的答案投了赞成票,谢谢你花时间来帮助我:)我从来没有完全理解过“微软。*”这个词。。评论说,它用于跳过非关键的Microsoft日志,但xml看起来却在做相反的事情?当然,设置maxLevel=“Info”意味着您将得到所有不需要的废话,并且没有任何警告/错误/严重日志记录?@Murphybro2日志记录规则是自上而下评估的。但是标有
final=“true”
的日志记录规则将阻止LogEvents进一步访问其他规则。因此,第一条规则将匹配名称以“Microsoft”开头且日志级别为Info(或不太严重)的任何记录器。由于
final=“true”
的原因,它将阻止该输出到达其他规则,并且该输出将被丢弃,因为第一个规则没有
writeTo
。另见:是的,我也看到了这种情况。但在这个特殊的场合,我尝试过清理(甚至手动删除bin文件夹中的文件)。我猜是缓存搞乱了。是的,我也看到了。但在这个特殊的场合,我尝试过清理(甚至手动删除bin文件夹中的文件)。我猜是一些缓存搞乱了它。