googleapis / googleapis/google-cloud-python
Add StructuredLogHandler adapter
- Ngôn ngữ chính
- Python
- Star
- 5.4k
- Fork
- 1.8k
- Merge trung bình
- 3 ngày 4 giờ
- Pull request đã merge (30 ngày)
- 122
Mô tả
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}
[...]
}
```
Hướng dẫn đóng góp
Đánh giá
Issue này chưa được đánh giá.