使用 aspnet 核心排除特定端点 serilog 日志记录

Raf*_*eli 3 serilog .net-core asp.net-core

我们有一个 aspnetcore 应用程序,我们有一个健康检查,每 x 秒向一个端点发出请求。我们的 API 使用 serilog,日志级别信息记录对 API 的每个请求。

我的问题是:我们如何过滤以从对特定端点发出的日志请求中排除?

举个例子,这是我们今天的日志代码:

        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
                .Enrich.FromLogContext()                    
                .Filter.ByExcluding(c => c.MessageTemplate.Text.Contains("Request"))
                .WriteTo.Console()
                .WriteTo.RollingFile(hostingContext.Configuration["log-path"]))                    
            .Build();
Run Code Online (Sandbox Code Playgroud)

今天我们只能过滤所有请求。我们如何过滤特定的端点请求?

Raf*_*eli 9

我找到了这样做的方法。

而不是 Exclude by MessageTemplate,我由 Property Value 排除。

过滤器是这样的:

Filter.ByExcluding(c => c.Properties.Any(p => p.Value.ToString().Contains("swagger")))
Run Code Online (Sandbox Code Playgroud)

最后,代码应该是这样的:

Filter.ByExcluding(c => c.Properties.Any(p => p.Value.ToString().Contains("swagger")))
Run Code Online (Sandbox Code Playgroud)

希望这对帮助我的人有所帮助!