gpt4 book ai didi

python - 向 CloudLoggingHandler 类提供 "resource"参数不起作用

转载 作者:行者123 更新时间:2023-12-01 08:00:07 29 4
gpt4 key购买 nike

CloudLoggingHandler 类提供 resource 参数不起作用,也就是说,它无法记录到 stackdriver。如果我注释掉资源,它就可以正常工作。我还尝试了一个不在 Django 中运行的简单 python 脚本,它也运行得很好。

这实际上是我的 Django LOGGING 处理程序设置:

'handlers': {
'stderr': {
'class': 'google.cloud.logging.handlers.CloudLoggingHandler',
'name': "name",
'resource': Resource(
type="container",
labels={
...
},
),
'client': google.cloud.logging.Client()
},
},

没有资源,没问题:

'handlers': {
'stderr': {
'class': 'google.cloud.logging.handlers.CloudLoggingHandler',
'name': "name",
'client': google.cloud.logging.Client()
},
},

一个简单的脚本也可以工作:

import logging
import google.cloud.logging # Don't conflict with standard logging
from google.cloud.logging.handlers import CloudLoggingHandler, setup_logging
from google.cloud.logging.resource import Resource

client = google.cloud.logging.Client()
logging.getLogger().setLevel(logging.INFO) # defaults to WARN

res = Resource(
type="container",
labels={
...
},
)
handler = CloudLoggingHandler(client, name='name', resource=res)
setup_logging(handler)
logging.error('logging!')

我使用的google-cloud-logging版本是1.10.0。有人可以提供一些有关调试 stackdriver 日志记录的建议吗?

最佳答案

此问题很可能是由资源格式错误引起的,原因可能是该类型不受支持(或不再受支持)、标签与给定类型的预期标签不匹配、缺少必需的标签,或者是因为需要特殊权限才能针对相关的特定资源类型写入日志。

在这种特殊情况下,使用 container 而不是 k8s_container 看起来很可疑。基于this conversation以及 Stackdriver Monitoring resource types 列表中存在 k8s_container以及Stackdriver Logging resource types ,而 container 仅在后者上有记录,这可能是已弃用的资源类型,已被 k8s_container 取代。

如果这不起作用,写入远程日志失败应该在本地生成日志(或使用附加到 background thread transport 的任何处理程序);尽管这些日志显然更难访问,但如果您可以访问这些日志,应该可以看到尝试写入 Stackdriver Logging 时出了什么问题。

关于python - 向 CloudLoggingHandler 类提供 "resource"参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55774786/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com