使用ASPNET Core排除特定的端点serilog日志记录

时间:2018-08-09 01:11:56

标签: asp.net-core .net-core serilog

我们有一个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();

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

1 个答案:

答案 0 :(得分:1)

我找到了解决方法。

我将其排除在财产价值之外,而不是MessageTemplate中。

过滤器是这样的:

Filter.ByExcluding(c => c.Properties.Any(p => p.Value.ToString().Contains("swagger")))

最后,代码应如下所示:

WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
        .Enrich.FromLogContext()                  
        .Filter.ByExcluding(c => c.Properties.Any(p => p.Value.ToString().Contains("swagger")))
        .WriteTo.Console()
        .WriteTo.RollingFile(hostingContext.Configuration["log-path"]))                    
    .Build();

希望这对某人有所帮助!