在cloudbuild中从python进行日志记录不需要';行不通

在cloudbuild中从python进行日志记录不需要';行不通,python,google-cloud-build,Python,Google Cloud Build,我正在使用以下步骤之一运行cloudbuild: - name: "gcr.io/something" id: DO-STUFF entrypoint: python args: ['some_script.py'] waitFor: - WHATEVER 在我的some_script.py中,我有一些日志语句: ... LOGGER = logging.getLogger(__name__) ... LOGGER.info('Did work.') ... 运行cloudbuild成功

我正在使用以下步骤之一运行cloudbuild:

- name: "gcr.io/something"
id: DO-STUFF
entrypoint: python
args: ['some_script.py']
waitFor:
  - WHATEVER
在我的
some_script.py
中,我有一些日志语句:

...
LOGGER = logging.getLogger(__name__)
...
LOGGER.info('Did work.')
...

运行cloudbuild成功地运行了脚本,但是我在cloudbuild日志中没有看到任何日志。如何将它们添加到那里?

您必须配置日志记录器以在标准输出流中打印日志。按如下方式更新代码:

...
LOGGER = logging.getLogger(__name__)
...
import sys
out_hdlr = logging.StreamHandler(sys.stdout)
# Format the output as you want. Let only the message if you don't care about other fields
out_hdlr.setFormatter(logging.Formatter('%(asctime)s %(message)s'))
out_hdlr.setLevel(logging.INFO)
LOGGER.addHandler(out_hdlr)
...
LOGGER.info('Did work.')
...
更新

这里是我的确切测试过程

要执行的脚本
Script\u log.py

import logging
import sys
print("line0")
log = logging.getLogger()
out_hdlr = logging.StreamHandler(sys.stdout)
out_hdlr.setFormatter(logging.Formatter('%(message)s'))
out_hdlr.setLevel(logging.INFO)
log.addHandler(out_hdlr)
log.setLevel(logging.INFO)

log.info("THIS IS AN ERROR")
云构建文件定义(
cloudbuild.yaml
file)

这里是命令的结果
gcloud builds submit

Operation completed over 1 objects/415.0 B.
BUILD
Already have image (with digest): gcr.io/cloud-builders/gcloud
line0
THIS IS AN ERROR
PUSH
DONE
以及stackdriver日志中的日志


唯一的区别是,我在getLogger()中没有
\uuu name\uu

从日志记录切换到打印语句会使它们在cloudbuild日志中可见。我确实有
\uuuu main\uuuu
部分,但我不认为这会导致日志记录不起作用。不过我想试试。
Operation completed over 1 objects/415.0 B.
BUILD
Already have image (with digest): gcr.io/cloud-builders/gcloud
line0
THIS IS AN ERROR
PUSH
DONE