【发布时间】:2021-10-14 13:55:30
【问题描述】:
我有一个 ASP.NET Core 应用程序(实际上是 .NET 5),它具有以标准方式实现的健康检查端点
services.AddHealthChecks()...
运行状况检查工作正常。问题是它们经常被调用,因此它们会在我们的存储中生成大量日志。
服务在 appsettings.json 中具有标准的 .NET 日志记录机制和默认值,例如
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft": "Debug",
"Microsoft.Hosting.Lifetime": "Debug"
}
},
问题是我如何才能更改这个非常健康检查的详细级别(例如到Information)(以及它内部的实现,如EF.Core 的东西或其他任何东西),同时保持它为Debug in所有其他地方?
是否有任何参数或设置可以帮助解决这个问题?
这里的目标是减少日志存储消耗。
【问题讨论】:
-
您在配置中看到 LogLevel 元素了吗?运行状况检查记录的名称空间是什么?您是否尝试过将其添加到那里,并配置最低级别,例如“信息”?在github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks/blob/…(通过documentation 找到的存储库中的随机文件)看起来它的日志命名空间是“HealthChecks”。
-
@CodeCaster 禁用命名空间的日志记录也会在所有其他地方禁用它们,而不仅仅是在运行状况检查特定的“调用堆栈”中。如果我做对了。此外,配置中的 HealthChecks=None 只能禁用特定的健康检查内容,而不是所有其他内容,例如在健康检查中使用的数据库访问过程。
-
啊,你的意思是健康检查可能会执行一个查询,该查询又会在其自己的记录器名称上触发 SQL 调试日志记录?也许一些示例日志会澄清这一点。
-
这些日志通常看起来像
dbug: Microsoft.EntityFrameworkCore.Database.Connection[20000] Opening connection to database 'some_db' on server 'tcp://localhost:5432'. -
我对@AndrewSilver 的帖子进行了编辑,它可能不是您的理想选择,但它是一个解决方案。
标签: c# asp.net-core logging health-monitoring