如何配置环境以防止记录 Microsoft 消息?
How to configure environment to prevent Microsoft messages from being logged?
我有一个 Microsoft DotNet Core 2.0 应用程序 运行 作为 AWS ECS 服务,它位于负载均衡器后面,它的 Cloudwatch 日志中充满了来自 AspNetCore.Hosting 层的消息,因为负载均衡器的运行状况检查调用应用程序的状态端点:
17:49:18 [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
17:49:18 Request starting HTTP/1.1 GET http://10.10.1.184/status
17:49:18 [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
17:49:18 Executing action method Controller.Controllers.StatusController.Status (MyEcsApplication) with arguments ((null)) - ModelState is Valid
17:49:18 [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Mvc.Formatters.Json.Internal.JsonResultExecutor[1]
17:49:18 Executing JsonResult, writing value Controller.Models.StatusModel.
17:49:18 [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]
17:49:18 Executed action Controller.Controllers.StatusController.Status (MyEcsApplication) in 4.8748ms
17:49:18 [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
17:49:18 Request finished in 32.7132ms 200 application/json; charset=utf-8
应用程序的日志级别设置为调试,因为我正在进行初始测试,这些消息使日志非常嘈杂。有没有办法配置日志记录以排除来自 Microsoft.AspNetCore 的消息?
这是我的 appsettings.json 文件:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug"
}
},
"AWS": {
"Profile": "default",
"Region": "us-east-1"
},
"Log4Net": {
"ConfigFileRelativePath": "log4net.xml",
"Repository": "NETCoreRepository"
},
"Swagger": {
"FileName": "MyEcsApplication.xml"
}
}
和 Program.cs 启动代码:(编辑以添加 ConfigureAppConfiguration)
var host = new WebHostBuilder()
.UseKestrel() // use default web server on port 80
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
config.AddEnvironmentVariables();
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
})
.Build();
// run the web host and block until host shutdown
host.Run();
尝试将您的 Logging LogLevel 更改为如下内容:
"Logging": {
"LogLevel": {
"Microsoft": "Error",
"Default": "Debug"
}
}
这里有一些关于过滤的文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?tabs=aspnetcore2x#log-filtering
我有一个 Microsoft DotNet Core 2.0 应用程序 运行 作为 AWS ECS 服务,它位于负载均衡器后面,它的 Cloudwatch 日志中充满了来自 AspNetCore.Hosting 层的消息,因为负载均衡器的运行状况检查调用应用程序的状态端点:
17:49:18 [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
17:49:18 Request starting HTTP/1.1 GET http://10.10.1.184/status
17:49:18 [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
17:49:18 Executing action method Controller.Controllers.StatusController.Status (MyEcsApplication) with arguments ((null)) - ModelState is Valid
17:49:18 [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Mvc.Formatters.Json.Internal.JsonResultExecutor[1]
17:49:18 Executing JsonResult, writing value Controller.Models.StatusModel.
17:49:18 [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]
17:49:18 Executed action Controller.Controllers.StatusController.Status (MyEcsApplication) in 4.8748ms
17:49:18 [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
17:49:18 Request finished in 32.7132ms 200 application/json; charset=utf-8
应用程序的日志级别设置为调试,因为我正在进行初始测试,这些消息使日志非常嘈杂。有没有办法配置日志记录以排除来自 Microsoft.AspNetCore 的消息?
这是我的 appsettings.json 文件:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug"
}
},
"AWS": {
"Profile": "default",
"Region": "us-east-1"
},
"Log4Net": {
"ConfigFileRelativePath": "log4net.xml",
"Repository": "NETCoreRepository"
},
"Swagger": {
"FileName": "MyEcsApplication.xml"
}
}
和 Program.cs 启动代码:(编辑以添加 ConfigureAppConfiguration)
var host = new WebHostBuilder()
.UseKestrel() // use default web server on port 80
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostingContext, config) =>
{
var env = hostingContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
config.AddEnvironmentVariables();
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
})
.Build();
// run the web host and block until host shutdown
host.Run();
尝试将您的 Logging LogLevel 更改为如下内容:
"Logging": {
"LogLevel": {
"Microsoft": "Error",
"Default": "Debug"
}
}
这里有一些关于过滤的文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?tabs=aspnetcore2x#log-filtering