Zor*_*rik 10 python logging docker google-cloud-run
我按照本指南https://firebase.google.com/docs/hosting/cloud-run来设置云运行 docker。然后我尝试按照本指南https://cloud.google.com/run/docs/logging执行简单的日志。尝试将结构化日志写入 stdout 这是我的代码:
trace_header = request.headers.get('X-Cloud-Trace-Context')
if trace_header:
trace = trace_header.split('/')
global_log_fields['logging.googleapis.com/trace'] = "projects/sp-64d90/traces/" + trace[0]
# Complete a structured log entry.
entry = dict(severity='NOTICE',
message='This is the default display field.',
# Log viewer accesses 'component' as jsonPayload.component'.
component='arbitrary-property',
**global_log_fields)
print(json.dumps(entry))
Run Code Online (Sandbox Code Playgroud)
我在 Cloud Logs Viewer 中看不到此日志。每次调用 docker 时,我都会看到 http Get 日志。我错过了什么吗?我对此很陌生,想知道假设我创建的 docker 完全按照指南中的步骤(https://firebase.google.com/docs/hosting/cloud)记录信息并查看它的简单方法是什么-运行)
谢谢
小智 9
我遇到了完全相同的问题。我确实发现刷新标准输出会导致日志出现,否则它不会出现。对我来说看起来像是 Cloud Run 中的一个错误。
print(json.dumps(entry))
import sys
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
#对于Python/Java
使用“google-cloud-logging”模块是将容器日志推送到 Stackdriver 日志的最简单方法。配置 google-cloud-logging 以使用 python 的默认日志记录模块
import logging as log
import google.cloud.logging as logging
def doSomething(param):
logging_client = logging.Client()
logging_client.setup_logging()
log.info(f"Some log here: {param}")
Run Code Online (Sandbox Code Playgroud)
现在您应该在 Cloud Run Revision 下的 Stackdriver 日志记录中看到此日志。