我正在尝试在谷歌云上运行的服务上正确输出日志,并且大多数情况下它们都被正确识别(
DEBUG
和INFO
日志,被发送到stdout
,被标记为信息,而WARNING
、ERROR
和 CRITICAL
日志发送至stderr
并标记为错误)。现在,我正在尝试了解它们的确切严重性,而无需使用 google-cloud-logging
库。有没有办法可以实现这个目标?
这里显示了我当前获得的示例,其严重性(左侧的图标)与日志是否来自
stdout
或stderr
匹配。
这就是我想要获得的,但不使用
google-cloud-logging
库
编辑:
我的日志通过使用 python 的
python-json-logger
库以 json 格式写入输出流。我的谷歌云日志存储的信息如下图所示。我们没有使用 Fluentd 进行日志解析。
经过一些研究和帮助后 @SerhiiRohoza看来你不能,所以为了在谷歌云上设置严重性,你需要将谷歌云日志库添加到你的项目中,并按照文档中描述的进行设置。
这是一个对我有用的简单技巧:
_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,
)