jenkins - 停止 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
解决方案
推荐阅读
- lftp - 使用 lftp 下载文件似乎不知道我身边的磁盘已满。我该如何解决?
- java - Joda time - 下次是 X 点钟
- django - 如何以编程方式在 Django 中创建数据库视图?
- javascript - Firefox 错误:尝试仅从扩展中获取资源时出现 NetworkError
- asp.net-core - 将 OAuth 用于拥有其使用的资源的本机桌面应用程序是否有意义?
- docker - End 和 Home 按钮在 docker 容器中不起作用
- reactjs - 我如何从 obejct 和对象内部获取数据有一个数组并传递 react-bootstrap
- google-workflows - GCP 工作流程:处理 200 以外的 http 函数响应
- python - Pandas 在 groupby 上按列标准化
- r - 计算驱动因素分析的相关性