.NetCore 日志在 GCP Stackdriver 中输出错误的严重性
Posted
技术标签:
【中文标题】.NetCore 日志在 GCP Stackdriver 中输出错误的严重性【英文标题】:.NetCore log output wrong severity in GCP Stackdriver 【发布时间】:2020-11-10 23:28:29 【问题描述】:.netcore 应用程序的默认日志条目被写入标准输出,并由 GCP Stackdriver 解释为 info 消息,即使它是 错误。有没有办法将 .netcore 错误写入 stderr 或以某种方式配置它们,以便 Stackdriver 将它们解释为错误?
Stackdriver 日志条目:
.netcore 应用程序日志条目:
【问题讨论】:
没有默认的日志条目,你必须配置它。您发布的内容是因为某处添加了控制台日志记录而生成的。那可能是通用主机构建器或其他东西。您是如何配置日志记录的? 您可以使用 GCP 的ASP.NET Core integration 将日志事件直接发送到 StackDriver,而不是通过标准输出 @PanagiotisKanavos looks like 从 aspnetcore 2.2 开始有一个默认的日志记录配置;我将尝试使用 GCP 的 ASP.NET Core 集成,虽然我不明白它如何让 Stackdriver 正确解释严重性。 如果您坚持写入控制台,则必须删除默认控制台记录器并添加另一个。 Microsoft.Extensions.Logging.Console 记录器是非常 基本的,具有硬编码格式,可以在不同的行中写入单个事件的一部分。它不能被定制,也不意味着——它只是最基本的默认值。 Serilog 的控制台提供程序提供了广泛的自定义,但是当您已经可以将事件发送到 StackDriver 时,为什么还要使用 控制台? @PanagiotisKanavos 默认的日志条目是指默认的控制台记录器,我不坚持要登录到控制台,所以清除默认的提供程序并直接登录到 Stackdriver 如果适合我的话。我删除了默认的控制台记录器并添加了谷歌的记录器工厂,并且 Stackdriver 开始正确解释日志条目的严重性,谢谢 【参考方案1】:per Panagiotis Kanavos@:
如果您坚持写入控制台,则必须删除默认控制台记录器并添加另一个。
Microsoft.Extensions.Logging.Console
记录器非常基础,采用硬编码格式,将单个事件的各个部分写入不同的行。它不能被定制,也不意味着——它只是最基本的默认值。 Serilog 的控制台提供程序提供了广泛的自定义功能,但既然您已经可以向 StackDriver 发送事件,为什么还要使用控制台呢?
这确实解决了最初的问题,每个 Kiramm@:
我删除了默认控制台记录器并添加了 Google 的记录器工厂,Stackdriver 开始正确解释日志条目的严重性
【讨论】:
以上是关于.NetCore 日志在 GCP Stackdriver 中输出错误的严重性的主要内容,如果未能解决你的问题,请参考以下文章