【问题标题】:GCP Log explorer shows wrong severity level of log recordsGCP 日志浏览器显示错误的日志记录严重级别
【发布时间】:2022-02-20 01:01:37
【问题描述】:

我正在 GKE 中运行 Java 应用程序并在日志资源管理器中监控日志。 Java 应用程序正在将日志写入stdout,据我了解,GKE 代理解析它并将其发送到日志浏览器。我发现日志浏览器显示WARNERROR 消息的严重性为INFO。 我发现我无法更改默认的日志解析器并配置 logback 以表示适用于 GCP 的 JSON 格式的 java 日志(我使用了来自此 answer 的实现),这是一个示例:

{"message":"2022-02-17 12:42:05.000 [QuartzScheduler_Worker-8] DEBUG some debug message","timestamp":{"seconds":1645101725,"nanos":0},"thread":"QuartzScheduler_Worker-8","severity":"DEBUG"}
{"message":"2022-02-17 12:42:05.008 [QuartzScheduler_Worker-8] INFO some info message","timestamp":{"seconds":1645101725,"nanos":8000000},"thread":"QuartzScheduler_Worker-8","severity":"INFO"}
{"message":"2022-02-17 12:42:05.009 [QuartzScheduler_Worker-8] ERROR some error message","timestamp":{"seconds":1645101725,"nanos":9000000},"thread":"QuartzScheduler_Worker-8","severity":"ERROR"}

但它根本没有帮助。

请指出我对 JSON 格式的错误之处,或者我可能需要在 GCP 端额外配置一些东西。我已经检查了官方doc 关于日志 JSON 格式的信息,但我不明白我缺少什么。

【问题讨论】:

    标签: java google-cloud-platform google-kubernetes-engine logback google-cloud-logging


    【解决方案1】:

    根据文档link 1 & link 2

    严重性:默认情况下,写入标准输出的日志处于 INFO 级别,写入标准错误的日志处于 ERROR 级别。结构化日志可以包含一个严重性字段,用于定义日志的严重性。

    如果您使用的是 Google Kubernetes Engine 或 App Engine 柔性环境,您可以将结构化日志作为 JSON 对象写入单行序列化到 stdout 或 stderr。然后,Logging 代理将结构化日志作为 LogEntry 结构的 jsonPayload 发送到 Cloud Logging。


    如果手动执行不起作用,您可以尝试:

    • 直接发送日志到Cloud Logging API

    • 使用this官方Java logback lib(注意:它目前是一个在制品)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多