Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Asp.net core Serilog筛选器表达式无法排除给定的终结点日志_Asp.net Core_Logging_Serilog - Fatal编程技术网

Asp.net core Serilog筛选器表达式无法排除给定的终结点日志

Asp.net core Serilog筛选器表达式无法排除给定的终结点日志,asp.net-core,logging,serilog,Asp.net Core,Logging,Serilog,我在.NetCore2.2webapi项目中有一个healthcheck端点,我不想为它生成和编写任何日志。我正在将日志写入WindowsEventLog。为此,我使用了一个单独的配置文件,用于在启动时加载的日志记录目的 这是我在控制器中为healthcheck设置的端点: [Route("healthcheck")] [AllowAnonymous] public IActionResult Get() { return Ok(""); } 以下是我加载配置文件SeriLogSet

我在.NetCore2.2webapi项目中有一个healthcheck端点,我不想为它生成和编写任何日志。我正在将日志写入WindowsEventLog。为此,我使用了一个单独的配置文件,用于在启动时加载的日志记录目的

这是我在控制器中为healthcheck设置的端点:

[Route("healthcheck")] 
[AllowAnonymous]
public IActionResult Get()
{
    return Ok("");
}
以下是我加载配置文件SeriLogSettings.json的方式,该文件是我为保存Serilog配置而创建的:

 public Startup(IConfiguration configuration, IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
               .SetBasePath(env.ContentRootPath)
               .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
               .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
               .AddJsonFile("SeriLogSettings.json", optional: false)
               .AddEnvironmentVariables();

            Configuration = builder.Build();
        }
这就是我的SerilogSettings.json的样子:

{
  "Serilog": {
    "Using": [ "Serilog.Settings.Configuration", "Serilog.Sinks.EventLog" ],
    "Filter": [
      {
        "Name": "ByExcluding",
        "Args": {
          "expression": "EndsWith(RequestPath, '%/healthcheck')"
        }
      }
    ],
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "Enrich": [ "FromLogContext" ],
    "WriteTo": [
      {
        "Name": "EventLog",
        "Args": {
          "source": "WebAPI", 
          "logName": "Application",
          "managedEventSource": true
        }
      }
    ],
    "Properties": {
      "Application": "ApplicationAPI"
    }
  }
}
尽管使用ByExcluding表达式排除/healthcheck端点的日志,我还是在WindowsEventLog中获取日志。 我无法修复发生这种情况的原因,也不确定我做错了什么?

问题是您正在检查的路径中的%字符,它应该是/healthcheck


如果您查看GitHub页面,您会发现他们在测试请求路径时也提到了/SomeEndpoint。

这是我尝试的第一件事,但没有成功。我甚至尝试了这个表达式,但仍然不起作用:expression:RequestPath(如“%/healthcheck%”还确保安装了正确的筛选器numget Serilog.Filters.Expressions已弃用,并将被Serilog.Expressions替换。配置设置保持不变。
"expression": "EndsWith(RequestPath, '/healthcheck')"