问题标签 [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.
java - SLF4J 如何支持结构化日志记录
任何人都知道通常如何使用 SLF4J 实现结构化日志记录?
是否有任何开源已经在那里处理这个?
c# - 使用 Serilog 编写结构化日志
我用 Serilog 尝试了以下日志:
Serilog 产生了这个输出:
Serilog 是一个结构化的记录器,我预计它会产生如下内容:
我做错了什么还是我理解 Serilog/结构化日志记录错误?
sumologic - Sumo Logic:结构化日志支持?
Sumo Logic 是否支持结构化日志记录(即消息模板、消息模板散列、属性映射等)?这得到了 Seq 和 Splunk 的支持,但到目前为止,我所看到的只是能够以 JSON 格式记录并使用 json 管道来操作它......
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 中很好地做到这一点有任何建议吗?
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是否提供结构化日志记录?
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 的方法?比如将它们输出到自己的文件中?
c# - ILogger 不以 JSON 格式返回消息和对象
我试图通过以下方式使用 ILogger,
但输出只是对象名称。
我在这里做错了什么?