问题标签 [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 投票
0 回答
348 浏览

python - 将 structlog 事件流式传输到 Logstash

我正在尝试在 AWS Lambda 函数中使用 structlog,并将日志事件直接流式传输到我们的 Logstash 服务器。为此,我使用了使用 beats 传输层的 logstash-async 库。

编码:

我发现虽然我可以在 CloudWatch 中看到 stdout 日志记录,但 Logstash 服务器似乎没有接收事件。

0 投票
0 回答
948 浏览

python-3.x - structlog 无法添加处理程序以写入文件

以上是配置,但是当我将其与文本提取服务一起运行时,它不会写入文件,而是仅写入标准输出

提取服务是使用张量流的 CNN OCR。如果我将其变为函数并调用它,则所有输出都将重定向到文件中,但我只想记录我添加的项目

0 投票
1 回答
1326 浏览

python - Django Structlog 未将日志消息打印或写入控制台或文件

我已经为我的 Django 项目安装了django-structlog 1.4.1。我已按照该链接中描述的所有步骤进行操作。

在我的settings.py文件中:

在我的views.py中:

json.log中的输出:

flat_line.log中的输出:

控制台输出:

我的问题是:

  • 'info' 和 'debug' 级别的日志消息未显示在控制台上。
  • 除了“event='request_started'”和“event='request_finished'”之外,任何类型的日志消息都不会写入日志文件

我希望在我的所有日​​志文件和控制台中都显示相同的消息。我怎样才能做到这一点?

0 投票
1 回答
149 浏览

python - 如何将记录器 django_structlog.middlewares.request 重定向到另一个文件?

structlog与 Django 一起使用,但我发现我的flat_line.log文件难以阅读,因为每次在管理部分执行操作时,都会有几个新条目,如下所示:

如何将所有条目从记录器重定向django_structlog.middlewares.request到另一个文件,这样它们就不会用大量不需要的信息淹没日志文件?

这是我的配置的样子:

谢谢

0 投票
1 回答
102 浏览

python - 使用 structlog 记录更改的对象属性

我最近发现structlog并想用它来记录一些对象的对象属性。我不确定两件事:

1) 面向对象日志的最佳实践是什么?我想绑定一些始终为对象记录的对象属性,例如 ID。我能找到的对象的唯一示例是这个,它logger被创建为全局变量,每个对象创建一个新的记录器,并再次创建函数。(如果我理解正确的话。)

2) 如果我的某些属性随时间发生变化,例如用户的位置,该怎么办?如果我只是在构造函数中绑定位置,即使用户移动,它也总是记录相同的位置。每次运动后我都必须“重新绑定”吗?如何?

这是我目前拥有的:

structlog在这个面向对象的示例中使用正确/良好吗?无论如何,即使用户移动,它也总是打印相同的位置。我想,我必须log.msg("User moved", pos=str(self.pos))更新上下文?但这只会更新函数内记录器的上下文。在其他功能中,位置仍然会被错误地记录。

0 投票
1 回答
120 浏览

python - 如何在普通控制台模式下使用 structlog 对键:值对进行排序?

structlog与 Django 一起使用,并注意到key:value在控制台模式下对输出是按字母顺序排列的,这意味着当我绑定一个以_like开头的新键时,log.bind('_id'=id)它会首先添加。

我问这个问题是因为在key:value中间或行首插入新的一对后,阅读控制台时,结构良好且彩色的日志的好处就消失了。

该文档提到了一个处理器布尔参数sort_keys,但key_value格式化程序不支持它。如何在普通控制台中取消排序键:值对?

这是我的配置:

0 投票
2 回答
827 浏览

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

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

这是一个例子:

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

使用 python-json-logger:

安慰:

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

安慰:

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

我想要的日志格式如下:

感谢您的见解

0 投票
2 回答
153 浏览

python - 为什么每次我将列表添加为关键字 arg 时,python structlog 都会记录一个 redactError?

我正在使用 python structlog 版本 19.1.0 ( https://www.structlog.org/en/19.1.0/index.html ),在以前的部署中,我使用了相同的版本并且没有收到任何 redactError 消息我的日志。但是现在,每当我将关键字 args 添加到日志消息时(特别是如果该值是一个列表),它也会记录一个 redactError。

我的代码:

日志消息:

我不知道为什么它redactError显然仍然能够在日志消息中添加关键字参数时给我一个。我还注意到,如果列表长于 1,则会在redactError字符串中添加更多错误(例如,每个索引的“错误编辑项 <>:未知接口接口 {} 未编辑\n”)。

我真的很困惑为什么我会收到这个错误。它并没有干扰我的代码执行能力,它只是真的把日志弄得一团糟。任何帮助表示赞赏!

编辑:感谢下面的一些评论。添加我的日志记录配置以防出现问题:

0 投票
1 回答
414 浏览

python - 如何从 structlog 中隐藏 Celery 任务 ID?

我在我的 Django 应用程序中使用了 Structlog 和 Celery,两者都工作得很好,但是我想防止task_id在工作人员执行任务时出现在日志中。我怎样才能做到这一点?

原因是task_idkey:value 长度为 36 个字符,因此日志输出难以阅读。

这就是我为 Celery 设置 structlog 的方式:

谢谢

0 投票
2 回答
2024 浏览

python - 使用 structlog 设置日志级别

我正在尝试设置 structlog 并设置日志级别。我的代码如下所示:

这失败了:

好的,当然。我不应该将 PrintLogger 与 stdlib 处理器一起使用。但是我想按日志级别进行过滤(因为这就是日志通常的工作方式,嗯?)那我该怎么做呢?我假设我需要使用其他一些记录器工厂,但是哪一个?当然 structlog.stdlib.LoggerFactory 可以工作,但它不会重定向到文件。

所以我说:好的,我将创建自己的过滤器:

...

当我尝试使用记录器时,我得到:

这是来自

但为什么?我的处理器有什么问题?