You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP中Cloud Batch作业完成后出现ERROR级日志的原因及解决方法

问题:Cloud Batch作业完成后Log Explorer出现ERROR级别的日志消息

在GCP中通过Cloud Workflow运行一个简单的Cloud Batch作业,作业代码如下:

import json
import os
import logging
import google.cloud.logging

log_client = google.cloud.logging.Client()
log_client.setup_logging()

# total arguments
file_task_records = json.loads(os.environ['FILE_TASK_RECORDS'].replace("'", '"'))
logging.info(f'BATCH JOB: {file_task_records}')

作业运行符合预期,但作业完成后,Log Explorer中出现三条ERROR级别的日志消息:

Program shutting down, attempting to send 1 queued log entries to Cloud Logging...
Waiting up to 5 seconds. 
Sent all pending logs. 

请问出现该错误的原因是什么?该如何修复?


原因分析

这是google-cloud-logging库的一个已知问题:当程序退出时,日志客户端在尝试发送剩余队列中的日志条目时,错误地将这些正常的 shutdown 提示信息标记为ERROR级别。这些内容并非真正的错误,只是日志级别被错误归类了。

修复方案

方法1:主动控制日志客户端关闭流程

在程序结束前手动刷新并关闭日志处理器,避免触发默认的shutdown逻辑,示例代码如下:

import json
import os
import logging
import google.cloud.logging
from google.cloud.logging_v2.handlers import CloudLoggingHandler

log_client = google.cloud.logging.Client()
handler = CloudLoggingHandler(log_client)
logging.basicConfig(handlers=[handler], level=logging.INFO)

# 处理业务逻辑
file_task_records = json.loads(os.environ['FILE_TASK_RECORDS'].replace("'", '"'))
logging.info(f'BATCH JOB: {file_task_records}')

# 主动刷新日志并关闭处理器
handler.flush()
handler.close()

方法2:在Log Explorer中过滤误标日志

通过添加查询过滤条件,在Log Explorer中屏蔽这些并非真正错误的日志内容:

NOT textPayload:"Program shutting down, attempting to send" AND NOT textPayload:"Waiting up to" AND NOT textPayload:"Sent all pending logs"

方法3:升级google-cloud-logging库

官方后续版本已修复该日志级别误标记的问题,执行以下命令升级到最新版本:

pip install --upgrade google-cloud-logging

内容的提问来源于stack exchange,提问作者Sergii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 07:05:34