TL,博士; 使用 CloudLoggingHandler 进行 Stackdriver 日志记录 API 调用时会忽略日志级别从使用 Google Cloud Logging driver 的 Docker 容器.
细节;
从运行在 Google Compute Engine 上的 Docker 容器获取日志的推荐方法是使用 Stackdriver Logging Agent :
It is a best practice to run the Stackdriver Logging agent on all your VM instances. The agent runs under both Linux and Windows. To install the Stackdriver Logging agent, see Installing the Logging Agent.
以下步骤已成功完成:
Editor
和 Logs Writer
角色。 然后我复制了示例 CloudLoggingHandler example来自 Google 的 Cloud Platform Python docs .
import logging
import google.cloud.logging
from google.cloud.logging.handlers import CloudLoggingHandler
client = google.cloud.logging.Client()
handler = CloudLoggingHandler(client)
cloud_logger = logging.getLogger('cloudLogger')
cloud_logger.setLevel(logging.INFO)
cloud_logger.addHandler(handler)
cloud_logger.error('bad news error')
cloud_logger.warning('bad news warning')
cloud_logger.info('bad news info')
Docker 容器以 Google Cloud Logging Driver 启动标志(
--log-driver=gcplogs
):sudo docker run --log-driver=gcplogs --name=server gcr.io/my-project/server:latest
这有效,但是所有日志,无论级别如何,仅在查看“任何日志级别”时才在 Stackdriver 中可见。奇怪的是,消息本身包含级别 :
2018-08-22 22:34:42.176 BST
ERROR:bad news error
2018-08-22 22:34:42.176 BST
WARNING:bad news warning
2018-08-22 22:34:42.176 BST
WARNING:bad news info
这使得无法在 Stackdriver UI 中按级别过滤:
在下面的屏幕截图中,每个日志条目的 LHS 上的所有图标都显示级别为
Any
:最佳答案
据我所知,CloudLoggingHandler
是一个独立的处理程序,将日志发送到 Global
日志级别。与 gcplogs
集成驱动程序正确,请尝试使用 ContainerEngineHandler
关于docker - Stackdriver Log Agent - 与用于 Docker 的 Google Cloud Logging 驱动程序无关的日志级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51975804/