Python 在日志记录中向基于 structlog 的格式化程序添加额外的字段

2023-12-20

我正在尝试将日志的额外字段添加为键值,同时继续使用标准日志记录库和 structlog ProcessorFormatter。

这是一个例子:

如果我们使用 JsonFormatter,额外的字段将作为键值添加到日志中。

使用 python-json-logger:

formatter = jsonlogger.JsonFormatter()
handler = logging.StreamHandler()
handler.setFormatter(formatter)

logging.basicConfig(
    level=logging.DEBUG,
    handlers=[handler]
)

logger = logging.getLogger('testnameloger1')
logger.debug('testmsg2', extra={'extra2': 2})

console:

{"message": "testmsg2", "extra2": 2}

在日志记录中使用基于结构日志的格式化程序进行渲染:

shared_processors = [
    structlog.stdlib.add_logger_name,
    structlog.stdlib.add_log_level,
    structlog.processors.TimeStamper(fmt='iso'),
]

formatter = structlog.stdlib.ProcessorFormatter(
    processor=structlog.processors.JSONRenderer(),
    foreign_pre_chain=shared_processors,
)
handler = logging.StreamHandler()
handler.setFormatter(formatter)

logging.basicConfig(
    level=logging.DEBUG,
    handlers=[handler]
)

logger = logging.getLogger('testnameloger1')
logger.debug('testmsg1', extra={'extra1': 1})

console:

{"event": "testmsg1", "logger": "testnameloger1", "level": "debug", "timestamp": "2020-06-16T13:33:50.881221Z"}

如何在日志输出中添加额外字段?

我想要的日志格式如下:

{"event": "testmsg1", "extra1": 1, "logger": "testnameloger1", "level": "debug", "timestamp": "2020-06-16T13:33:50.881221Z"}

感谢您的见解


这从 structlog 21.5.0 开始有效!

查看structlog.stdlib.ExtraAdder https://www.structlog.org/en/stable/api.html#structlog.stdlib.ExtraAdder处理器,允许您选择要添加的内容(如果添加则添加所有内容,就像ExtraAdder()).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 在日志记录中向基于 structlog 的格式化程序添加额外的字段 的相关文章

随机推荐

  • Flex 容器的子容器的滚动宽度不正确

    根据w3学校 https www w3schools com jsref prop element scrollwidth asp The 滚动宽度 and 滚动高度属性返回元素的整个高度和宽度 包括不可见的高度和宽度 由于溢出 如果是这样
  • ES6/7 中可以导出 Arrow 函数吗?

    下面的导出语句出现语法错误 export default const hello gt console log say hello why 我只能导出命名函数 export function hello console log hello
  • 使用 html2pdf 时如何摆脱 css 中的左边距和上边距

    我正在使用 html2pdf 我想使用 css 去掉顶部和左边距 但我不能 在输出缓冲边距已设置为 0 之前 它适用于 html 但是当我使用它将其转换为 pdf 时html2pdf http html2pdf fr en default上
  • * 不支持的操作数类型:“numpy.ndarray”和“numpy.float64”

    长期读者 第一次作家 我在谷歌和堆栈溢出上进行了搜索 但并没有真正找到这个问题的一般答案 我在使用 numpy 1 6 2 的 python 2 7 3 中收到 numpy ndarray 和 numpy float64 不受支持的操作数类
  • 如何将网站封装在手机应用程序中?

    我见过很多手机应用程序只是打开一个网页而没有控件 只是页面 我正在寻找指导和链接来开始这样简单的事情 如果您想在 Android 中封装一个网站 您可以使用以下代码来实现 Roskvist https roskvist wordpress
  • F# 析构函数的等效项

    我正在将一个将非托管库包装的 C 类转换为 F 我遇到了重写随后的析构函数的看似简单的问题 class Wrapper P Invoke ellided private SomeType x public Wrapper x new Som
  • Xamarin 安卓 |布局样式

    我正在尝试创建这种布局样式 但仍然不知道该怎么做 有人可以帮助我吗 我需要主布局 并且在布局中必须位于左侧图像视图的颜色 接下来是带有填充父级描述的标题 右侧必须是 img 干得好 我为您设计了左侧标志 标题和描述标签以及右侧图像视图控件
  • 使用 Spring Boot 的 gRPC 和 REST 微服务

    对于一个项目 我想使用 Spring Boot 设置一个小型微服务场景 其中包含一个向客户端公开 REST 和 GraphQL 的 API 网关 一个 Eureka 服务注册表和三个服务 出于性能原因 我希望 API 网关后面的所有服务都能
  • 缺少节点-v57-linux-x64/grpc_node.node

    严格执行以下步骤时 https firebase google com docs admin setup https firebase google com docs admin setup 部署到我的服务器时 我收到此错误 2017 10
  • 非 ASCII 字符需要 web.config 吗?

    尝试制作我的第一个 ASP NET 页面 在 XP 上安装了 IIS 5 1 配置为运行 NET 4 创建了一个新的虚拟目录并添加了一个 aspx 文件 当我浏览该文件时 非 ASCII 字符已损坏 例如 U 00FC 会转换为 U 00C
  • 在 Woocommerce 3 中更改自定义订单状态的电子邮件主题

    我已成功更改 Woocommerce 处理订单的电子邮件主题 using 这个线程 https stackoverflow com a 48880997 3730754 add filter woocommerce email subjec
  • 使用 Selenium 等待元素加载

    我已经仔细查看了这里 但 web 元素等待似乎不适合我的代码 我对 Java 和 Selenium 相当陌生 我想尝试在超时之前将等待元素放入我的代码中 有什么建议么 当到达这个点时它就会崩溃 因为页面确实需要一段时间来搜索这个地址 Ste
  • ffmpeg API h264编码的视频不能在所有平台上播放

    Edit 在之前的版本中 我使用了非常旧的 ffmpeg API 我现在使用最新的库 问题仅略有变化 从 主要 变为 高 我正在使用 ffmpeg C API 在 C 中创建 mp4 视频 我希望生成的视频具有 约束基线 配置文件 以便生成
  • 如何使脚本加载和es6模块加载一起工作?

    这仅加载 jquery 一次 对于以下情况也是如此 但这会加载jquery两次
  • 跨多个 SQL 服务器的唯一 ID

    我正在开发一些将在全国多个实例中使用的软件 与许多使用登录的软件一样 我需要为每个用户提供唯一的 ID 该软件的每个实例都需要完全独立地运行 但最终很可能会合并一些数据库 在本例中 我希望每个用户的 ID 在所有服务器上都是唯一的 如果服务
  • 如何销毁/释放1个活动/布局中使用的资源?

    How do I release resources used in 1 activity So I got 3 layouts and activity for each layout but the problem is when I
  • 图像 Uri 到字节数组

    我目前有两项活动 一种用于从 SD 卡提取图像 另一种用于蓝牙连接 我使用 Bundle 来传输活动 1 中图像的 Uri 现在我想做的是获取蓝牙活动中的 Uri 并通过字节数组将其转换为可传输状态我已经看到了一些示例 但我似乎无法让它们为
  • ASP.NET Core 模型绑定错误消息 ASP.NET CORE 2.0 中的本地化

    在 ASP NET CORE 1 1 中 可以使用资源文件本地化模型绑定错误消息 并配置其选项以在 Startup cs 中为 ModelBindingMessageProvider 设置消息访问器 例如 services AddMvc o
  • 数组中的最大绝对差

    我遇到了这个算法问题 我能够实现 O n 2 解决方案 有没有更好的方法在 O n 时间内做到这一点 问题 给你一个包含 N 个整数的数组 A1 A2 AN 返回最大值f i j 对全部1 i j N f i j 定义为 A i A j i
  • Python 在日志记录中向基于 structlog 的格式化程序添加额外的字段

    我正在尝试将日志的额外字段添加为键值 同时继续使用标准日志记录库和 structlog ProcessorFormatter 这是一个例子 如果我们使用 JsonFormatter 额外的字段将作为键值添加到日志中 使用 python js