问题标签 [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.
python - 将 structlog 事件流式传输到 Logstash
我正在尝试在 AWS Lambda 函数中使用 structlog,并将日志事件直接流式传输到我们的 Logstash 服务器。为此,我使用了使用 beats 传输层的 logstash-async 库。
编码:
我发现虽然我可以在 CloudWatch 中看到 stdout 日志记录,但 Logstash 服务器似乎没有接收事件。
python-3.x - structlog 无法添加处理程序以写入文件
以上是配置,但是当我将其与文本提取服务一起运行时,它不会写入文件,而是仅写入标准输出
提取服务是使用张量流的 CNN OCR。如果我将其变为函数并调用它,则所有输出都将重定向到文件中,但我只想记录我添加的项目
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'”之外,任何类型的日志消息都不会写入日志文件
我希望在我的所有日志文件和控制台中都显示相同的消息。我怎样才能做到这一点?
python - 如何将记录器 django_structlog.middlewares.request 重定向到另一个文件?
我structlog
与 Django 一起使用,但我发现我的flat_line.log
文件难以阅读,因为每次在管理部分执行操作时,都会有几个新条目,如下所示:
如何将所有条目从记录器重定向django_structlog.middlewares.request
到另一个文件,这样它们就不会用大量不需要的信息淹没日志文件?
这是我的配置的样子:
谢谢
python - 使用 structlog 记录更改的对象属性
我最近发现structlog
并想用它来记录一些对象的对象属性。我不确定两件事:
1) 面向对象日志的最佳实践是什么?我想绑定一些始终为对象记录的对象属性,例如 ID。我能找到的对象的唯一示例是这个,它logger
被创建为全局变量,每个对象创建一个新的记录器,并再次创建函数。(如果我理解正确的话。)
2) 如果我的某些属性随时间发生变化,例如用户的位置,该怎么办?如果我只是在构造函数中绑定位置,即使用户移动,它也总是记录相同的位置。每次运动后我都必须“重新绑定”吗?如何?
这是我目前拥有的:
我structlog
在这个面向对象的示例中使用正确/良好吗?无论如何,即使用户移动,它也总是打印相同的位置。我想,我必须log.msg("User moved", pos=str(self.pos))
更新上下文?但这只会更新函数内记录器的上下文。在其他功能中,位置仍然会被错误地记录。
python - 如何在普通控制台模式下使用 structlog 对键:值对进行排序?
我structlog
与 Django 一起使用,并注意到key:value
在控制台模式下对输出是按字母顺序排列的,这意味着当我绑定一个以_
like开头的新键时,log.bind('_id'=id)
它会首先添加。
我问这个问题是因为在key:value
中间或行首插入新的一对后,阅读控制台时,结构良好且彩色的日志的好处就消失了。
该文档提到了一个处理器布尔参数sort_keys
,但key_value
格式化程序不支持它。如何在普通控制台中取消排序键:值对?
这是我的配置:
python - Python 在日志记录中向基于 structlog 的格式化程序添加额外字段
我正在尝试将日志的额外字段添加为键值,同时继续使用标准日志库和 structlog ProcessorFormatter。
这是一个例子:
如果我们使用 JsonFormatter,则会将额外的字段作为键值添加到日志中。
使用 python-json-logger:
安慰:
在日志记录中使用基于 structlog 的格式化程序进行渲染:
安慰:
如何在日志输出中添加额外的字段?
我想要的日志格式如下:
感谢您的见解
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”)。
我真的很困惑为什么我会收到这个错误。它并没有干扰我的代码执行能力,它只是真的把日志弄得一团糟。任何帮助表示赞赏!
编辑:感谢下面的一些评论。添加我的日志记录配置以防出现问题:
python - 如何从 structlog 中隐藏 Celery 任务 ID?
我在我的 Django 应用程序中使用了 Structlog 和 Celery,两者都工作得很好,但是我想防止task_id
在工作人员执行任务时出现在日志中。我怎样才能做到这一点?
原因是task_id
key:value 长度为 36 个字符,因此日志输出难以阅读。
这就是我为 Celery 设置 structlog 的方式:
谢谢
python - 使用 structlog 设置日志级别
我正在尝试设置 structlog 并设置日志级别。我的代码如下所示:
这失败了:
好的,当然。我不应该将 PrintLogger 与 stdlib 处理器一起使用。但是我想按日志级别进行过滤(因为这就是日志通常的工作方式,嗯?)那我该怎么做呢?我假设我需要使用其他一些记录器工厂,但是哪一个?当然 structlog.stdlib.LoggerFactory 可以工作,但它不会重定向到文件。
所以我说:好的,我将创建自己的过滤器:
...
当我尝试使用记录器时,我得到:
这是来自
但为什么?我的处理器有什么问题?