问题标签 [logstash-logback-encoder]

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 回答
1187 浏览

java - 如何将 PrettyPrintingJsonGeneratorDecorator 和 MaskingJsonGeneratorDecorator 结合在一起?

我尝试将logstash-logback-encoder版本配置6.4为将漂亮的打印 JSON 打印为

输出pretty print符合预期。然后我向前一步配置掩码为

输出也marked符合预期。

无论如何,当我将这两者结合在一起时,它只做一件事,要么pretty print要么masked

它只做masked, 但是not pretty print

它只做pretty print, 但是not masked

我怎样才能结合PrettyPrintingJsonGeneratorDecorator在一起MaskingJsonGeneratorDecorator?你能帮忙建议吗?

0 投票
1 回答
487 浏览

logback - 如何在 Spring 应用程序的 Logback 中以编程方式传递 Patten 和 JsonFactoryDe​​corator

这是我的 logback.spring.xml

由于我使用具有相同编码模式的不同附加程序并且为了重用该模式,我试图以如下方式以编程方式添加,但在这里我不确定如何从类级别传递模式、MDC 值和 CharacterEscapesJsonFactoryDe​​corator。请你帮我解决这个问题。

Logback.spring.xml

0 投票
0 回答
59 浏览

logging - 如何在 logback 配置中为不同的 appender 共享相同的文件

我在 logback-spring.xml 中使用不同的附加程序,这是我的配置,

在这里,我为每个 appender 都有唯一的文件名和 fileNamePattern,所以这工作正常,但为每个 appender 创建每个新文件。

附加器 1:

附加器 2:

如果我只想为所有 appender 生成一个文件,那么如何实现。我试图为我遇到错误的所有附加程序设置相同的名称。

ch.qos.logback.core.rolling.RollingFileAppender[] 中的错误 - “文件”选项具有相同的值

是否可以在 logback 中的一个文件中共享日志消息。

0 投票
2 回答
5183 浏览

java - 如何使用 logback 以文本和 json 格式打印 Spring Boot 日志?

对于日志记录,我们使用 Logback。目前我们正在使用 Splunk 来查看 Spring Boot 日志。根据项目要求,我们需要转向 Kibana。首先,我们应该拥有 JSON 格式的日志,以便 Kibana 可以轻松处理它。目前我们没有用 Kibana 替换 Splunk,但是当与 Kibana 成功集成后,我们可以逐步在所有项目中替换 Splunk。

因此,根据要求,我们需要现有的日志,即文本日志,但出于研发目的,我们还需要 JSON 日志。

0 投票
0 回答
226 浏览

logging - 如何使用springboot logback在日志中打印http状态

我正在尝试使用 Spring Boot 日志在日志语句中打印 http 状态代码。但我不知道打印的模式。我使用了 statusCode、status 等,但不起作用。请告知是否有一种方法可以让我在日志中也打印状态以防异常。实施是

回退xml

0 投票
1 回答
1164 浏览

spring-logback - 如何为 logback 填充自定义字段值?

我正在尝试在 sprintboot 中编写一个自定义启动器以进行日志记录。这样所有下游项目都可以遵循在类路径中添加启动器的相同登录模式。

为此,我尝试创建一个 logback.xml 文件并使用 LogstashEncoder。在这个项目中,我还使用了 sleuth 和 zipking,这样我就可以看到 traceId 和 spanId。

以下是 logback.xml 文件。

现在,如果您将在 RollingFileAppender 中看到,我正在使用一个带有硬编码值的自定义字段。我想从 http 请求动态填充它的值。因为tenantId 将从请求本身解决。

有人可以帮我解决这个问题如何动态填充自定义字段值。

0 投票
1 回答
357 浏览

java - 使用 append 而不是 LogstashMarker 的 appendRaw 时丢失日志消息

我在我们的环境中偶然发现了丢失的日志消息。

我们在 Java 应用程序中使用 ELK 堆栈和 logback 和 logstash-logback-encoder。为了进行结构化查询,我们使用 LogstashMarkers 将结构化参数附加到日志中。在丢失日志消息的情况下,它是一个包含 JSON 的字符串。

一些日志消息完全丢失。不仅没有保存标记,还保存了完整的日志消息。它们在 Kibana 中不可见。我们的应用程序或 logstash 服务器的日志中没有错误。

我可以用最少的代码创建一个示例存储库并将其发布在 GitHub 上:https ://github.com/seism0saurus/logging-issue

要运行它,您需要一个 logstash 服务器和 netcat。该项目中的记录器配置为使用控制台附加程序,因此我们有一个参考,即真正记录了哪些消息。此外,还有一个用于 localhost:8081 上的 netcat 服务器的附加程序和一个用于 logstash 服务器的附加程序。两者具有相同的配置。只是地址不同。所以我很确定消息会发送到logstash服务器,如果它是发送到netcat的话。

下面是主类的代码:

这是 logstash 附加程序:

当我运行应用程序时,我收到了预期的 4 条日志消息。所有 4 都出现在控制台和 netcat 服务器中。但只有数字 1 和 4 出现在 kibana 中。因此,我假设处理Markers.appendMarkers.appendRaw. MESSAGE是一个包含 JSON 的字符串。但我希望,我不必检查字符串的内容来决定调用哪个方法。

logstash 服务器的日志中没有错误消息。它似乎不是连接错误、未知或不可访问的主机或完整的缓冲区。我重现了所有这些案例,它们在日志中留下了有意义的错误消息。

你知道吗,这里会发生什么?我是否必须检查要放入标记的字符串的内容以防止丢失完整的日志消息?

编辑:我得到了关于这个问题的更多信息。我本地机器上 docker 内的 logstash 实例确实接收所有日志并将它们写入具有以下管道的文件。

编辑 2:基于https://jaxenter.de/elastic-stack-containern-docker-86374我构建了一个完整的 ELK 堆栈进行比较。它不会丢失任何日志消息。因此,我们的管理员构建了 ELK 堆栈的问题所在。你有什么想法?

0 投票
1 回答
164 浏览

spring-boot - Logstash StructuredArguments kv 正在以时间戳格式打印 ZonedDateTime 变量

我正在使用 logstash KV 方法进行日志记录。因为我有一个作为字符串的键和作为一个对象的值。在日志中,对象打印为正确的 JSON。但是 JSON 对象中最初是 ZonedDateTime 的一些变量正在日志中作为时间戳打印。

例如,其中一个变量在日志中打印为:

0 投票
1 回答
255 浏览

logstash-logback-encoder - 在 JSON 格式的 Spring Boot 编码中访问 logstash-logback 中的请求标头键

我的用例是我需要在spring boot应用程序中打印tomcat服务器的访问日志。日志应采用 JSON 格式,并带有自定义字段名称。像这样:

现在我在附加到控制台的 logback.xml 中使用 net.logstash.logback.encoder.AccessEventCompositeJsonEncoder 编码器。

我已经成功获得了其他字段的值,例如 _response_code : "%statsCode 通过这样做。

但是,如何在我的自定义 json 对象中直接从 request_headers 对象访问引用者?

0 投票
1 回答
286 浏览

java - SLF4J/Java 日志记录:是否可以自动添加日志参数?

介绍

我们在几个 Spring (Boot) 应用程序中结合使用 SLF4J 和 Logback,最近开始使用 logstash-logback-encoder 来实现结构化日志记录。由于我们还必须支持纯文本日志,我们想知道是否可以自动将参数附加到日志消息中,而无需使用{}标记手动将它们添加到消息中。

所需行为的示例

为了说明所需的行为,这是我们希望的:

产生以下所需的输出,其中参数自动附加在消息末尾的括号中:

或者另一个在消息中同时包含显式参数和末尾的参数的示例:

产生以下所需的输出:

问题

SLF4J/Logback 可以做到这一点吗?如果没有,您是否知道其他日志框架或实现此目的的方法(在 Java 中)?