问题标签 [structured-logging]

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 投票
6 回答
16117 浏览

java - SLF4J 如何支持结构化日志记录

任何人都知道通常如何使用 SLF4J 实现结构化日志记录?

是否有任何开源已经在那里处理这个?

0 投票
3 回答
9217 浏览

python - 可以使用 Python 标准库完成结构化日志记录吗?

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

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

0 投票
1 回答
1555 浏览

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

我用 Serilog 尝试了以下日志:

Serilog 产生了这个输出:

Serilog 是一个结构化的记录器,我预计它会产生如下内容:

我做错了什么还是我理解 Serilog/结构化日志记录错误?

0 投票
1 回答
4242 浏览

python - 如何通过 AWS Cloudwatch 进行全文搜索?

我使用结构化日志记录(因此:记录 json 字符串)并使用日志标识符。所以在我的代码中,每条日志消息都有一个唯一的标识符,这样我就可以双向搜索:当我看到一条日志消息时,我知道它来自哪里,当我期待日志消息时,我可以搜索这个标识符。

我的日志字符串如下所示:

我不太确定是否需要对 Cloudwatch 做其他事情,因为它看起来像这样:

最近,我在寻找我的标识符##_foo_bar-1,Cloudwatch 告诉我:

在此处输入图像描述

我也试过:

没有成功。但它在日志中是肯定的(我已经看到了,在手动完成之后)。

如何使用搜索功能找到它?

0 投票
0 回答
175 浏览

sumologic - Sumo Logic:结构化日志支持?

Sumo Logic 是否支持结构化日志记录(即消息模板、消息模板散列、属性映射等)?这得到了 Seq 和 Splunk 的支持,但到目前为止,我所看到的只是能够以 JSON 格式记录并使用 json 管道来操作它......

0 投票
1 回答
1172 浏览

logback - 使用带有 SLF4J 的 JSON 日志记录时如何包含多个 JSON 字段?

我正在使用 Dropwizard 1.3.2,它使用 SLF4J over Logback 进行日志记录。我正在为 ElasticSearch 的摄取编写日志,所以我想我会使用 JSON 日志记录并制作一些 Kibana 仪表板。但我真的希望每条日志消息不止一个 JSON 项目 - 如果我正在记录一个包含十个字段的状态更新,理想情况下我希望记录该对象并将 JSON 字段显示为 JSON 日志中的顶级条目。我确实让 MDC 工作,但这非常笨拙并且不会使对象变平。

事实证明这很困难!我怎样才能做到这一点?我让它在 JSON 中记录,但我不能很好地记录多个 JSON 字段!

我做过的事情:

我的 Dropwizard 配置有这个附加程序:

显示附加字段,但这些值似乎在配置文件中是固定的并且不会更改。有一个“customFieldNames”,但没有关于如何使用它的文档,无论我在那里放什么,我都会得到一个“没有字符串参数构造函数/工厂方法来反序列化字符串值”错误。(文档有一个示例值“@timestamp”但没有解释,即使这样也会产生错误。他们也有像“(requestTime:request_time,userAgent:user_agent)”这样的例子,但同样,没有记录,我什么也做不了类似的工作,我尝试过的一切都会产生上述错误。

我确实让 MDC 工作,但是将每个项目插入 MDC 然后清除它似乎很愚蠢。

而且我可以反序列化一个对象并将其记录为嵌套的 JSON,但这似乎也很奇怪。

我在这方面看到的所有答案都是旧的 - 有人对如何在 Dropwizard 中很好地做到这一点有任何建议吗?

0 投票
2 回答
969 浏览

c# - 使用 Common.Logging 和 NLog 进行结构化日志记录

我的项目中有最新版本的Common.Logging (3.4.1) 和NLog (4.5.11)。按照说明在 app.config 中将 Common.Logging 与 NLog 绑定在一起,日志记录现在可以工作了。

现在我想要结构化日志记录:

以上是伪代码,不知道如何构造消息对象。而且,_logger.InfoFormat似乎与String.Format一起使用,而不是结构化日志记录。

除了使用ThreadVariablesContext/GlobalVariablesContext/NestedThreadVariablesContext之外, Common.Logging是否提供结构化日志记录?

0 投票
2 回答
1200 浏览

python - python logging - 使用 JSON 日志,我可以为每个日志添加一个“额外”值吗?

我正在使用 python日志记录模块以及python-json-logger,我想添加一些键:

无需执行以下操作即可自动发送到我的所有日​​志。

但是让它像我一样工作。:)

0 投票
1 回答
612 浏览

logging - 在 MEL 和 Serilog 等结构化日志系统中记录长消息的惯用方法是什么?

Microsoft.Extensions.Logging当我想存储一个短(<200 个字符)参数化字符串时,我的 ASP.NET Core 2.x Web 应用程序习惯性地使用它来执行“跟踪”式日志记录。这些记录的事件与围绕 Serilog 等结构化日志系统构建的工具和生态系统配合得很好。

例如

StringBuilder但是,我的应用程序还需要记录由应用程序使用以及由第三方组件生成的类似文本块构建的较大的文本块 (2-3KB) ,通常这些会消耗IProgress<String>该输出许多短字符串值的方式类似于临时使用Console.WriteLine.

例如

...这会产生一个包含有用信息并且需要单独查看的大型非结构化文本 blob,但它不适合现有的结构化日志记录工具。

ILogger我认识到一个通用的解决方案是为该实现编写一个包装器IProgress<String>- 但这种方法存在一些问题:

  • 原始文本块中的每个输出行都成为一个结构化对象,受其自身的附加属性的限制,这些属性会显着增加日志的大小。
  • 这会导致重复数据,例如结构化日志系统会添加时间戳,但文本也已经包含秒表时间值。
  • 通常,文本 blob 包含诸如用于框和指示处理区域的 ACII-art 之类的内容,并且每行缩进以表示更深层次的处理 - 如果每行单独存储且独立于其文本上下文,则此信息将丢失。
    • 只包含 ASCII 艺术矩形框的第一行的日志条目有什么用?

Serilog 或 MEL 中是否有专门处理文本 blob 的方法?比如将它们输出到自己的文件中?

0 投票
1 回答
1692 浏览

c# - ILogger 不以 JSON 格式返回消息和对象

我试图通过以下方式使用 ILogger,

但输出只是对象名称。

我在这里做错了什么?