首页 > 解决方案 > 停止 Jenkins 将 INFO 消息记录到 stderr(在 Google Cloud Logging 中解释为错误)

问题描述

我已经通过 Helm在 GKE 集群中部署了 Jenkins。但是,大多数日志都出现在 GKE 节点的 stderr 中,即使它们中的大多数是简单的INFO,因为它们正在stderr容器中被记录。

INFO其中一小部分在 Google Cloud Logging (Stackdriver) 中以严重程度正确显示,主要是与添加/删除工作 Jenkins 节点相关的日志。

似乎这里有一个解决方法但遗憾的是,我不能引入一个 DaemonSetfluentd来修改日志记录行为(背景

我曾考虑fluentd将某种带有 ServiceAccount 的 sidecar 容器包含在内,但解决方案并不理想。一旦它们已经保存在 Stackdriver 中,修改日志也是如此。

我已经查看了 Helm 配置、values.yaml文件、Jenkins 文档,并使用了Log Recorders. 事实证明,解决问题的所有尝试均未成功。

那我怎么能登录到stdout-levelINFO日志,并保持ERR-level 日志stderr

编辑#1:我通过 Helm 部署了 jenkins,没有在新的 GKE 集群中进行任何修改,并且行为与我在生产集群中看到的相同。

编辑#2:我终于找到了一种改变日志记录行为的方法,在这里解释,改变处理程序。默认情况下,所有内容都记录到System.err. 但是,看起来,如果我在全局范围内应用后者,System.err则无法发送更高严重性的错误。OutputStream

编辑#3:在 Jenkins 的 JIRA 中提交的任务 - https://issues.jenkins.io/browse/JENKINS-67106

标签: jenkinslogginggoogle-cloud-stackdriver

解决方案


推荐阅读