python - Python的标准库可以做结构化日志记录吗?

标签 python logging structured-logging

我最近阅读了有关结构化日志记录 (here) 的内容。这个想法似乎不是通过将简单的字符串作为一行附加到日志文件来记录,而是通过 JSON 对象来记录。这使得通过自动工具分析日志文件成为可能。

Python 的 logging 库可以进行结构化日志记录吗?如果没有,是否有针对它的“主流”解决方案(例如像 numpy/scipy 是科学计算的主流解决方案)?我找到了 structlog ,但我不确定它有多普遍。

最佳答案

您是否看过 python docs site section describing Implementing structured logging,它解释了如何将 python 内置记录器用于结构化日志记录?

下面是上面网站上列出的一个简单示例。

import json
import logging

class StructuredMessage(object):
    def __init__(self, message, **kwargs):
        self.message = message
        self.kwargs = kwargs

    def __str__(self):
        return '%s >>> %s' % (self.message, json.dumps(self.kwargs))

m = StructuredMessage   # optional, to improve readability

logging.basicConfig(level=logging.INFO, format='%(message)s')
logging.info(m('message 1', foo='bar', bar='baz', num=123, fnum=123.456))

这会产生以下日志。

message 1 >>> {"fnum": 123.456, "num": 123, "bar": "baz", "foo": "bar"}

希望这对您有所帮助。

关于python - Python的标准库可以做结构化日志记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48170682/

相关文章:

python - 如果我想捕获并记录(而不是引发)异常,KeyboardInterrupt 应该是唯一引发的异常吗?

c# - 事件日志实用性

c# - 使用 Azure Log Analytics 在 Azure Function v3 中进行结构化日志记录

c# - 使用 Serilog 写入结构化日志

python - 从 python 模块导入子类

c++ - 在运行时从应用程序读取调试信息

python - 稀疏 numpy 数组的局部敏感散列

.net-core - 如何在 AWS Cloudwatch 上的 Serilog 的结构化日志输出中显示带有替换参数的日志消息

python - 试图理解面向对象的编程。如何使用对象组合?

python - 坐标的 Numpy 矩阵