如何将 STDOUT 输出到 GCP 云日志

如何将 STDOUT 输出到 GCP 云日志

嘿,我在 gcp VM 上运行了一个作业,其中一些导入的库使用 print 或 python 日志库将日志记录到 stdout,并且我还编写了很多代码,其中输出使用 python 日志库 (例如logging.info("*** INFO ***")) 记录到 stdout。我遇到一个问题,日志打印到 STDOUT 但没有发送到 GCP 云日志。我尝试了很多方法,例如在 VM 上安装日志代理、查看大量 GCP 文档、使用弃用的日志库等,但都不起作用。以下是一些示例:

gcp_log_example.py-'HI'日志已发送到 GCP 云日志,但没有任何日志builtin_logger.py。这就是我无法使用这种方法的原因。

import subprocess
import google.cloud.logging
import logging

client = google.cloud.logging.Client()
client.setup_logging()
logging.info('HI')

subprocess.run('python3 builtin_logger.py', shell=True)

^^我不会使用这种方法,因为我很确定这需要我检查每个库并集成 GCP 日志记录。没有人会这样做。

builtin_logger.py

import logging
logging.basicConfig(level=logging.INFO)
print('*** print! ***')
logging.info('*** INFO! ***')
logging.warning('*** WARNING! ***')
logging.critical('*** CRITICAL! ***')
sys.stdout.flush()

^ 这些日志被发送到标准输出,但不会被发送到 GCP。

我也尝试过像这样运行它,但在这种情况下,严重性级别不会被捕获,但日志会被发送到 GCP 云日志(虽然两次 --- 日志是重复的)

tmp.sh

#!/bin/bash

python3 builtin_log.py 2>&1 | logger -t "builtin_log.py"
#!/bin/bash

sudo docker-compose up --build | logger 2>&1

^ 这基本上就是我想要的,但唯一的问题是它没有捕捉到严重性。

总结:我需要将 GCP VM 上的 STDOUT 日志发送到 GCP 云日志。这是正确的方法吗?

非常感谢您的帮助,谢谢!

相关内容