Asp.net core 通过MVC禁用类跟踪信息日志记录
在为ASP.NET核心MVC应用程序启用应用程序日志记录时,我发现对API的每个请求都会记录大量低级详细信息(参见下面的示例) 我发现这会用类似跟踪的细节污染应用程序日志(特别是因为我们每分钟都会收到数百个请求),这使得处理起来非常困难 有没有办法禁用此功能?或者我应该考虑另一种日志记录方法 API请求的示例信息日志 2017-03-14 09:23:46.944+00:00[信息]请求启动HTTP/1.1 GET application/json 2017-03-14 09:23:46.944+00:00[信息]已成功验证 代币 2017-03-14 09:23:46.944+00:00[信息]HttpContext.用户合并 通过来自authenticationScheme的自动身份验证:“载体” 2017-03-14 09:23:46.944+00:00[信息]认证方案: “持票人”已成功通过身份验证 2017-03-14 09:23:46.944+00:00[信息]授权被取消 用户成功:null 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[信息]执行的操作 “Xyz.GetAsync(Xyz.Api)” 在206.5169毫秒 2017-03-14 09:23:47.115+00:00[信息]请求已在中完成 216.8241ms 200应用程序/json;字符集=utf-8Asp.net core 通过MVC禁用类跟踪信息日志记录,asp.net-core,asp.net-core-mvc,asp.net-core-webapi,Asp.net Core,Asp.net Core Mvc,Asp.net Core Webapi,在为ASP.NET核心MVC应用程序启用应用程序日志记录时,我发现对API的每个请求都会记录大量低级详细信息(参见下面的示例) 我发现这会用类似跟踪的细节污染应用程序日志(特别是因为我们每分钟都会收到数百个请求),这使得处理起来非常困难 有没有办法禁用此功能?或者我应该考虑另一种日志记录方法 API请求的示例信息日志 2017-03-14 09:23:46.944+00:00[信息]请求启动HTTP/1.1 GET application/json 2017-03-14 09:23:46.944
日志级别 这些似乎都是
信息
,您应该能够在appsettings.json
中进行调整,以便记录的条目级别大于“info”。。。看
记录事件Id
日志级别是应用程序范围内的,因此所有使用日志的东西在这方面都是相同的。如果你想让你的日志脱颖而出,并且发现它们更重要,那么就把它们记录下来。将它们记录为警告(如果适用)。另外,您也可以使用EventId
开始隔离日志。其想法是,您可以根据“id”过滤日志,以快速找到感兴趣的内容
过滤器
最后,您可以应用过滤器
您可以为注册到的所有提供程序设置筛选规则
使用WithFilter扩展方法创建ILogerFactory实例。
下面的示例限制了框架日志(类别以
“Microsoft”或“System”)在允许应用程序在
调试级别
我想过滤器是你在这里要找的。指定
Microsoft
和System
都处于日志级别。警告
,那么您应该只看到其中的重要日志。看起来netcoreapp2.0中的钩子略有更改:
公共虚拟void配置服务(IServiceCollection服务)
{
services.AddSingleton();
AddSingleton(typeof(ILogger)、typeof(Logger));
services.AddLogging(builder=>
{
builder.SetMinimumLevel(LogLevel.Trace);
builder.AddFilter(“Microsoft”,LogLevel.Warning);
builder.AddFilter(“系统”,LogLevel.Error);
builder.AddFilter(“引擎”,LogLevel.Debug);
});
///…等等
}
添加上述内容对我来说是个好办法。@DavidPine问题是我们自己的信息级应用程序日志将无法通过。您可以回复答案。在任何情况下,您都可以在更合适的级别进行筛选或登录。你可能需要过滤。
public void Configure(IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
loggerFactory
.WithFilter(new FilterLoggerSettings
{
{ "Microsoft", LogLevel.Warning },
{ "System", LogLevel.Warning },
{ "ToDoApi", LogLevel.Debug }
})
.AddConsole()
.AddDebug()
}