通过 MVC 禁用类似跟踪的 INFO 日志记录

Dav*_*New 2 asp.net-core-mvc asp.net-core asp.net-core-webapi

在为 ASP.NET Core MVC 应用程序启用应用程序日志记录时,我发现每个向 API 发出的请求都记录了许多低级详细信息(请参见下面的示例)。

我发现这会用类似跟踪的细节污染应用程序日志(特别是因为我们每分钟收到数百个请求),使其变得非常难以处理。

有什么办法可以禁用它吗?或者也许我应该寻找另一种日志记录方法?

API 请求的示例 INFO 日志

2017-03-14 09:23:46.944 +00:00 [信息] 请求启动 HTTP/1.1 GET http://example.net/api/something application/json

2017-03-14 09:23:46.944 +00:00 [信息] 成功验证令牌。

2017-03-14 09:23:46.944 +00:00 [信息] HttpContext.User 通过来自 authenticationScheme 的 AutomaticAuthentication 合并:“Bearer”。

2017-03-14 09:23:46.944 +00:00 [Information] AuthenticationScheme:“Bearer”已成功通过身份验证。

2017-03-14 09:23:46.944 +00:00 [信息] 用户授权成功:空。

2017-03-14 09:23:46.944 +00:00 [信息] 执行带有参数的操作方法“Xyz.GetAsync (Xyz.Api)” (["Xyz.Something", "", "", "", " ", "0", "100", "", "2017-06-01T00:00:00Z", "False"]) - ModelState 有效

2017-03-14 09:23:47.115 +00:00 [信息] 执行 JsonResult,写入值“Xyz.Resources.SomeModel[]”。

2017-03-14 09:23:47.115 +00:00 [信息] 在 206.5169 毫秒内执行操作“Xyz.GetAsync (Xyz.Api)”

2017-03-14 09:23:47.115 +00:00 [信息] 请求在 216.8241ms 200 application/json 内完成;字符集=utf-8

use*_*608 5

看起来这个钩子在 netcoreapp2.0 中略有变化:

public virtual void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ILoggerFactory, LoggerFactory>();
    services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
    services.AddLogging(builder =>
    {
        builder.SetMinimumLevel(LogLevel.Trace);
        builder.AddFilter("Microsoft", LogLevel.Warning);
        builder.AddFilter("System", LogLevel.Error);
        builder.AddFilter("Engine", LogLevel.Debug);
    });

    /// ... etc
}
Run Code Online (Sandbox Code Playgroud)

添加上面的内容对我有用。