在 Google Cloud 上设置日志严重性,而不使用 google-cloud-logging 库

问题描述 投票:0回答:2

我正在尝试在谷歌云上运行的服务上正确输出日志,并且大多数情况下它们都被正确识别(

DEBUG
INFO
日志,被发送到
stdout
,被标记为信息,而
WARNING 
ERROR
CRITICAL
日志发送至
stderr
并标记为错误)。现在,我正在尝试了解它们的确切严重性,而无需使用
google-cloud-logging
库。有没有办法可以实现这个目标?

这里显示了我当前获得的示例,其严重性(左侧的图标)与日志是否来自

stdout
stderr
匹配。

google cloud logging example

这就是我想要获得的,但不使用

google-cloud-logging

expected log severities

编辑:

我的日志通过使用 python 的

python-json-logger
库以 json 格式写入输出流。我的谷歌云日志存储的信息如下图所示。我们没有使用 Fluentd 进行日志解析。

current log parsing structure

python google-cloud-platform google-cloud-logging
2个回答
6
投票

经过一些研究和帮助后 @SerhiiRohoza看来你不能,所以为了在谷歌云上设置严重性,你需要将谷歌云日志库添加到你的项目中,并按照文档中描述的进行设置。


5
投票
我也遇到过这个问题,GCP 会错误地解析我的日志级别。

这是一个对我有用的简单技巧:

_GCP_LOGGING_FORMAT = "{levelname:<.1}{asctime}.{msecs}000 {process} {name}:{lineno}] {message}" _DATE_FMT = "%m%d %H:%M:%S" logging.basicConfig(format=_GCP_LOGGING_FORMAT, datefmt=_DATE_FMT, style="{")
例如:

D1011 16:28:57.528787 1 <module>:89] Time to process request: 1234
如果您使用 loguru,则相当于:

_GCP_LOG_FORMAT = ( "{level:<.1}{time:MMDD HH:mm:ss.SSSSSS} {process} {name}:{line}] {message} | {extra}" ) logger.remove() logger.add( sys.stdout, format=_GCP_LOG_FORMAT, level=log_level, colorize=True, )
    
© www.soinside.com 2019 - 2024. All rights reserved.