首页 > 解决方案 > 用于 asp.net 核心重复规则的 NLog nlog.config

问题描述

我正在尝试将 NLog 应用于我的 ASP.NET 核心应用程序。我正在遵循 NLog 网站的指南:https ://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-2

以下是为nlog.config建议的规则

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

    <!--Skip non-critical Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" maxLevel="Info" final="true" /> <!-- BlackHole without writeTo -->

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

有两行具有相同的记录器名称模式

记录器名称="*" minlevel="Trace"

但针对不同的目标。一个用于 allfile 目标,另一个用于 ownFile-web 目标

这对我来说没有意义。这对我来说似乎是重复的。任何意见?谢谢!

标签: asp.net-core.net-corenlogasp.net-core-2.1nlog.config

解决方案


您需要从上到下阅读规则。有3条规则:

  1. 如果级别是跟踪或向上,则登录到allfile. 所以这个文件将包含所有的日志消息(包括那些来自外部的)
  2. 如果级别为最大信息(因此跟踪、调试和信息),并且如果记录器名称以 开头Microsoft.,则跳过日志消息(因为没有writeTo=停止处理(注意final=true
  3. 如果级别是跟踪或向上,则登录到ownFile-web. 但是因为(跟踪、调试和信息)微软。日志消息被跳过(参见前面的规则),这个文件将只包含您自己的日志 + 来自 Microsoft 的警告和错误 - 而不是来自 Microsoft 的跟踪、调试和信息。

推荐阅读