问题标签 [structlog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1094 浏览

python - 如何使 Python Structlog 在没有关键字“事件”的情况下进行日志记录

我正在使用 Python 结构日志。一切都记录为

我不想要那个 event 关键字,我只想记录事件数据:

我如何实现这一目标?

0 投票
3 回答
773 浏览

python - 减少记录的样板

我阅读了 structlog 的文档:配置

目标是将每个文件的日志记录样板减少到:

有没有办法甚至将其减少到一个导入行(没有;)?

0 投票
2 回答
236 浏览

python - 在 structlog 中设置渲染器树

我将如何配置以structlog使包括上述在内的所有消息infostdout使用一段KeyValueRenderer时间,而所有日志记录也将使用JSONRenderer?

注意:我只想使用 structlog,没有标准库的东西

0 投票
1 回答
114 浏览

python - 如何使用 structlog 将日期和日期时间记录为字符串?

Structlog 似乎在创建日志消息时使用,这__repr__会导致对象看起来更可取。datedatetime'datetime.datetime(2018, 9, 20, 10, 1, 52, 414750)''2018-09-20 10:01:52.414750'

我原以为会有一个现成的处理器来处理这个问题,但我找不到。

0 投票
2 回答
1516 浏览

python - 自定义日志级别不适用于 structlog

我正在使用 python 自定义日志 - TRACE 是下面代码中的自定义日志级别。

使用默认记录器,它工作正常

但是当我将它更改为 structlog 时,它给出了错误。

structlog 无法识别以下代码中的 TRACE。

似乎 structlog 不支持自定义日志级别?

已经尝试过提到的解决方法https://github.com/hynek/structlog/issues/47

IE

但它不工作

0 投票
2 回答
1454 浏览

structlog - 如何使用 structlog 添加代码行号

使用 python 标准日志记录模块,可以使用以下命令添加原始日志调用的行号:%(lineno)s.

这如何使用 structlog 来完成?

0 投票
2 回答
2065 浏览

python - 捕获 structlog 中的所有 stdout/stderr 以生成 JSON 日志

我目前正试图摆脱 print() 并开始使用 ELK 堆栈和 structlog 模块集中日志收集来生成结构化的 json 日志行。这对于我使用 loggingHelper 模块自己编写的模块来说非常好,我可以导入和使用

在其他模块和脚本中。这是 loggingHelper 模块类:

这会产生格式良好的输出(每行一个 JSON),filebeat 能够读取并转发到 Elasticsearch。但是,第三方库完全粉碎了格式良好的日志。

正如您所看到的,来自第三方 Librara(googleapiclient)的信息级别和错误级别消息都是在不经过日志处理器的情况下打印的。

使用我编写的 loggingHelper 模块捕获和格式化在执行一个脚本中发生的所有事情的最佳方式(也是最 Pythonic)是什么?这甚至是最佳实践吗?

编辑:目前记录器确实写入标准输出本身,然后使用>>和2>&1将其重定向到crontab中的文件。如果我想将通过第三方库日志记录写入 stdout/stderr 的所有内容重定向到我,这对我来说似乎是一种不好的做法,因为这会导致循环,对吗?因此,我的目标不是重定向,而是捕获日志处理器中的所有内容。相应地更改了标题。

此外,这是我想要实现的目标的粗略概述。我非常愿意接受与此不同的一般批评和建议。 在此处输入图像描述

0 投票
2 回答
488 浏览

python - Python structlog 中有没有办法将键从“记录器”更改为“命名空间”?

我在我的 Python 项目中使用 structlog - http://www.structlog.org/en/stable/ 。如果配置中的处理器是,我有一个

这会将 event_dict 中的键添加为logger. 但是,我想将密钥字符串更改为其他内容,namespace而不是logger. 我怎样才能做到这一点?

我已经检查了功能

但该函数使用硬编码字符串logger作为

0 投票
2 回答
235 浏览

python - 使用 structlog 登录 Python 项目并记录需要删除的第三方库

我正在使用 structlog 库来记录我的 Python 项目。我看到一些我不想要的第三方库日志。如何删除这些日志?

0 投票
0 回答
554 浏览

python - 多处理中的 structlog 和 stdlib 日志记录配置

我正在尝试将 structlog 集成到使用multiprocessing. 虽然我计划structlog完全切换到,但我也想捕获logging第三部分库的 stdlib 调用。由于我们计划发出 JSON 日志文件和键值输出,我认为正确的方法是将实际格式委托给logging

根据https://docs.python.org/3/howto/logging-cookbook.html#logging-to-a-single-file-from-multiple-processes我们使用 aQueueHandler将所有日志消息发送到主进程写作。

这是我目前的配置:

注意:我在调试过程中对两种输出格式都使用了 StreamHandler,但 JSON 格式的输出FileHandler最终会输出,因此 QueueHandler 介于两者之间。

输出是:

这里有多个问题:

  1. worker-process字段有主进程的值,而不是工作进程的值
  2. 记录器的event字段structlog包含的序列化值event_dict包含正确的值worker-process

我希望structlog在移交给loggingQueueHandler 之前评估处理器链。

有人可以解释一下 structlog 在这种情况下应该如何工作吗?