【问题标题】:ASP.NET Core - NLog - How can I disable logging for specific route?ASP.NET Core - NLog - 如何禁用特定路由的日志记录?
【发布时间】:2019-12-30 06:58:13
【问题描述】:

我有一个端点 /healthcheck 用于检查应用程序是否正常工作。另一个服务将每 5 秒调用一次此端点。

问题是这会导致 /healthcheck 请求产生大量日志数据。有没有办法配置 Nlog 以禁用 ASP.NET Core 上特定路由的日志记录?

提前谢谢你。

【问题讨论】:

  • 这取决于您记录数据的位置。如果你在中间件中做,那么你可以简单地检查那里的请求端点并绕过日志

标签: asp.net asp.net-core asp.net-web-api logging nlog


【解决方案1】:

您可以为此使用 NLog 过滤器,请查看 this

我以编程方式制作了一个过滤器,用于记录所有内容(没有关键级别)并忽略包含“SignalR”字样的路由:

// define a rule for non-exceptions
var nonExceptionsRule = new LoggingRule("*", LogLevel.Trace, LogLevel.Error, myTarget)
{
    Final = true,
    DefaultFilterResult = FilterResult.LogFinal
};

nonExceptionsRule.Filters.Add(new ConditionBasedFilter
{
    Condition = "contains('${aspnet-Request-Url}','SignalR')",
    Action = FilterResult.IgnoreFinal
});

您不能在过滤器中指定任何级别,以便它适用于所有级别:

var nonExceptionsRule = new LoggingRule("*", myTarget)
{
    Final = true,
    DefaultFilterResult = FilterResult.LogFinal
};          

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-24
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多