Stackdriver Log Agent-与适用于Docker的Google Cloud Logging驱动程序无关的日志级别

时间:2018-08-22 22:06:30

标签: docker google-cloud-platform stackdriver google-cloud-stackdriver

TL,DR; ,当使用CloudLoggingHandler从Docker容器中使用Google Cloud Logging driver进行Stackdriver logging API调用时,日志级别将被忽略。

详细信息; 从运行在Google Compute Engine上的Docker容器中获取日志的建议方法是使用Stackdriver Logging Agent

  

最佳做法是在所有计算机上运行Stackdriver Logging代理   VM实例。该代理可在Linux和Windows下运行。安装   Stackdriver Logging代理,请参阅安装日志代理。

以下步骤已成功完成:

  • 确保Compute Engine默认服务帐户具有EditorLogs Writer角色。
  • 确保VM实例具有适用于Stackdriver Logging API(完整)的Cloud API访问范围
  • 安装 start Stackdriver Logging Agent。

然后我从Google的CloudLoggingHandler example复制了示例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

这有效,但是 all 日志,无论级别如何,仅在查看“任何日志级别”时在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中按级别进行过滤:

enter image description here

在下面的屏幕截图中,每个日志条目的LHS上的所有图标将级别显示为Any

enter image description here

1 个答案:

答案 0 :(得分:0)

据我所知,UIView是一个独立的处理程序,它将日志发送到CloudLoggingHandler日志级别。要与Global驱动程序正确集成,请尝试使用ContainerEngineHandler