Google Cloud Logging使用项目级短资源名查询无LogEntry返回问题咨询
Google Cloud Logging entries.list 项目级短资源名无返回问题解决方法
问题根因
项目级短资源名projects/[PROJECT_ID]调用entries.list接口时,默认仅会查询项目下的_Default日志视图对应的存储桶内容。出现仅返回nextPageToken无日志条目、指定完整自定义存储桶路径可正常查询的情况,通常由以下原因导致:
- 项目默认的
_Default日志路由被修改或删除,所有日志均被路由到自定义存储桶,没有写入_Default桶 - 调用身份仅持有自定义存储桶的日志读取权限,没有项目层级的
logging.logEntries.list权限 _Default存储桶的日志保留周期设置过短,日志已被清理
可用解决方案
方案1:恢复默认日志路由
如果需要长期使用项目级短资源名查询日志,可恢复_Default默认路由配置,让日志同时写入默认存储桶和自定义存储桶,即可直接通过项目级短资源名查询到日志。
方案2:请求中增加filter参数
无需修改现有路由配置,保留项目级短资源名的同时,在请求参数中新增filter字段指定日志所在的存储桶即可,请求示例如下:
{ "resourceNames": [ "projects/[PROJECT_ID]" ], "filter": "resource.labels.bucket_id=\"[YOUR_BUCKET_ID]\"" }
将参数中[PROJECT_ID]、[YOUR_BUCKET_ID]替换为实际的项目ID和自定义存储桶ID即可正常查询。
方案3:补充项目层级IAM权限
给调用接口的身份授予项目层级的roles/logging.viewer(日志查看者)角色,确保身份有项目全域的日志查询权限。
注意:如果所有日志均存储在自定义存储桶,更推荐直接使用完整的视图资源路径作为resourceNames参数,查询效率更高,无需额外配置路由或过滤规则。
内容的提问来源于stack exchange,提问作者Alexey Markevich
相关产品推荐
相关产品推荐

