googleapis / googleapis/google-cloud-python

Add StructuredLogHandler adapter

未关闭
#15,414 2 条评论 2 个 reaction 已指派 0 人 在 GitHub 查看
api: logging priority: p3 type: feature request
主要语言
Python
星标
5.4k
派生
1.8k
平均合并
3 天 4 小时
30 天内合并 PR
122

描述

Thanks for stopping by to let us know something could be better!

**Is your feature request related to a problem? Please describe.**

In my project hosted in Google Cloud, I use `StructuredLogHandler` and quite often I need to pass some predefined context to log labels for easier system monitoring.
Let's say it could be some service configuration values, code versions, and many more.

Basically, I need to pass such context data every logger call: `logger.info('my message', extra={'labels': ...}}` which is hard to maintain.

**Describe the solution you'd like**

For this case, we have `logging.LoggerAdapter` in the Python standard library.
And I propose adding a specific adapter to support the Google Cloud format for this purpose.
I have implemented it already in my project, and think it could be useful for everyone.
With that adapter, I need to configure my logging context once and use my logger in an easier manner.
Let's look at the example:
```
import logging
from google.cloud.logging_v2.handlers.structured_log import AppendLabelLoggingAdapter
from google.cloud.logging_v2.handlers.structured_log import StructuredLogHandler
logging.root.setLevel(logging.INFO)
logging.root.handlers = [StructuredLogHandler()]
first_adapter = AppendLabelLoggingAdapter(logging.root, {'a': 5, 'b': 6})
first_adapter.info('first info')
{
"message": "first info",
"severity": "INFO",
"logging.googleapis.com/labels": {"python_logger": "root", "a": 5, "b": 6}
[...]
}
# Could be stacked
second_adapter=AppendLabelLoggingAdapter(first_adapter, {'hello': 'world'})
second_adapter.info('second info')
{
"message": "second info",
"severity": "INFO",
"logging.googleapis.com/labels": {"python_logger": "root", "hello": "world", "a": 5, "b": 6}
[...]
}
```

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。