问题标签 [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 回答
1782 浏览

logback - Flink 日志记录限制:如何将日志记录配置传递给 flink 作业

我有一个使用 logback 作为日志框架的 flink 作业,因为需要将日志发送到 logstash 并且 logback 有一个 logstash appender ( logstash-logback-appender )。appender 工作正常,当从 Eclipse 之类的 IDE 运行 flink 作业时,我可以在 logstash 中看到应用程序日志。日志配置文件logback.xml位于src/main/resources并包含在类路径中。即使从 IDE 外部的命令行运行作业,日志记录也能正常工作。

但是,当我通过 flink 仪表板在 flink 集群(独立,开始使用./start-cluster.bat)上部署此作业时,会忽略 logback 配置,并且不会将日志发送到logstash

我阅读了有关 flink 日志记录机制的更多信息,并遇到了有关配置 logback 的文档。本文档中提到的步骤适用于一些额外的步骤,例如logstash-logback-encoder在 lib/ 文件夹中添加 lib 以及logbackjars。

即使上面提到的步骤有效,这也是有问题的,因为flink 使用的flink/conf文件夹中的 logback 配置适用于整个 flink 设置和在 flink 上运行的所有作业。作业不能有自己的日志记录配置。例如。我希望 job1 写信给file,consolelogstashjob 2 只写信给file.

从仪表板启动的每个 flink 作业如何提供单独的日志记录配置?在仪表板上提交作业时,是否可以通过任何方式传递日志记录配置?

有没有办法强制 flink 在类路径上使用日志配置?

0 投票
2 回答
21247 浏览

spring-boot - Spring boot + Logback-logstash appender:找不到名为的appender

我正在尝试使用 logback-logstash 编码器在 POC 应用程序中配置可配置的 JSON 日志。尽管我已经定义了所有建议的依赖项,并将日志配置减少到只有一个记录器和附加程序(以尝试隔离问题),但我仍然收到“找不到附加程序 x。你是在上面还是下面定义了它......”

我已经尝试逐步删除所有其他记录器/附加器,直到留下一个“找不到”的记录器。我在记录器定义中引用之前多次检查了附加程序是否已定义。我目前正在运行测试,所以我创建了一个显式的 logback-tests.xml,其配置与 logback.xml 相同。我最初在里面设置了所有依赖项,但是按照 logback-logstash 编码器文档中的说明,我最好让它们由 dependencyManagement 管理

依赖项:

代码:

}

Logback.xml 配置:

0 投票
1 回答
1793 浏览

java - reactor.netty.http.server.AccessLog 产生 LoggingEvent 而不是 AccessEvent

我一直在尝试使用 webflux 配置 spring-boot 2.1 以将访问日志存储在 JSON 中。此外,我需要将协议、状态代码等信息作为单独的 JSON 字段(不是消息的一部分)。查看互联网,我发现了 logstash-logback-encoder。这似乎有我需要的一切。但是在运行时我收到以下错误:

我的配置相当简单:

在这一点上,我被卡住了。我一直在搜索互联网并查看 logback 代码,但我仍然不知道该怎么做才能让 AccessEvent 包含更多信息,而不是 LoggingEvent

0 投票
1 回答
7587 浏览

json - 如何将logstash logback 编码器的一些方法包装到一个内部字段中?

我希望能够将 logstash logback 编码器生成的一些字段包装在另一个字段中。这可以通过 logback-spring.xml 中的 XML 配置来完成,还是我必须实现一些类,然后在配置中引用它?

我尝试阅读有关实现 Factory 和 Decorator 方法的信息,但它似乎没有让我有任何收获。

我在记录某些内容时得到的当前 JSON 是:

我想要的是:

如您所见,一组选定的字段被包装在“数据”中,而不是稍后在外部。

0 投票
1 回答
640 浏览

spring-boot - 如何在 Logback 的 Logstash 编码器中使用来自配置服务器的 Spring 环境值

我想在Logback appender的 Logstash 编码器中使用 Spring 环境值作为自定义字段。

有一个通用的配置标签来使用属性

Spring为此提供了一个特殊的配置标签

然后可以在Logstash 编码器的自定义字段中使用这两个标签的属性

问题是,据我了解,这仅在某些情况下有效。问题大概是在Spring环境搭建的时候Logback已经配置好了

它似乎在什么时候起作用

  • 该属性是本地和静态的(在配置时可用)
  • 该属性位于 bootstrap.properties

它似乎不起作用

  • 从Spring 配置服务器检索时,该属性是动态的

我从配置服务器传递的属性值是null在配置 Logback 时,因此日志将它们显示appEnv_IS_UNDEFINED为一个名为appEnv.

因为大多数示例只是使用spring.application.namethis 似乎几乎没有被注意到。

为了解决时间问题,我搜索了一种重新加载 Logback 配置 onApplicationEvent的方法。我发现这个答案证实了我的问题并提供了一个框架解决方案。

我找到了其他解决方案,其中使用 Logstash 编码器的 Logback appender 完全以编程方式构建并添加到LoggerContext.

但是,我想知道是否还有一种方法可以坚持使用 appender 的 XML 配置,并在 Spring 环境准备好时以编程方式“重新加载”配置。我该怎么做?

我找到了这个答案来重新加载,但它不适用于我的情况。appEnv_IS_UNDEFINED继续出现在日志文件中。

0 投票
1 回答
1051 浏览

spring-boot - 带有 Logback 的 Spring Boot。不断收到错误,应用程序无法启动

我现在正在与这个问题作斗争 3 天。我有一个带有 logback 和 lodash 依赖项的 Spring Boot 2.1.7 设置(非常基本)。

我正在尝试将我的 fat jar 部署在 Google Cloud Compute Engine 上的 docker 映像中。

我有以下 logback-spring.xml 文件:

没什么特别...

使用本地/测试/默认配置运行应用程序,但在我的本地计算机上,我能够启动应用程序 - 没有问题。

在 GCE 的 docker 映像中运行它时,我得到以下信息:

完整日志:

请问有人可以帮我解决这个问题吗?

0 投票
1 回答
653 浏览

spring - 在 logback xml 中为不同的 appender 共享相同的编码器设置

我有一个编码器,net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder用于通过股票提供者、模式和自定义提供者的组合来配置日志内容。相同的内容将用于不同的附加程序,例如控制台、文件、滚动文件和用于单元测试的自定义附加程序。我不想在每个 appender 中重复相同的配置,因为它完全相同,所以我想知道是否有办法在不同的 appender 之间共享它?

例如

我知道有这个“包含”功能,但似乎它必须从根级别(即appender)开始才能包含。有没有办法在encoder级别“包含”?

0 投票
2 回答
1732 浏览

java - 与日志库冲突 - 类路径包含多个 SLF4J 绑定

我与日志库有冲突,但我不知道排除什么以及在哪里排除。

这是我的pom:

错误:

SLF4J:类路径包含多个 SLF4J 绑定。SLF4J:在 [jar:file:/C:/apache-cxf-3.3.4/lib/slf4j-jdk14-1.7.28.jar!/org/slf4j/impl/StaticLoggerBinder.class] 中找到绑定 SLF4J:在中找到绑定[jar:file:/C:/Users/u96712/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder .class] SLF4J:见http://www.slf4j.org/codes.html#multiple_bindings解释一下。SLF4J:实际绑定的类型为 [org.slf4j.impl.JDK14LoggerFactory] ​​线程“main”中的异常 java.lang.IllegalArgumentException:LoggerFactory 不是 Logback LoggerContext 但 Logback 在类路径上。删除 Logback 或竞争实现(从文件加载的类 org.slf4j.impl.JDK14LoggerFactory:/C:/apache-cxf-3.3.4/lib/slf4j-jdk14-1.7.28.jar)。如果您使用 WebLogic,则需要将“org.slf4j”添加到 WEB-INF/weblogic.xml 中的首选应用程序包中:org.springframework.util.Assert.instanceCheckFailed(Assert. java:655) 在 org.springframework.util.Assert.isInstanceOf(Assert.java:555) 在 org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:280) 在 org.

依赖树

0 投票
2 回答
1333 浏览

spring-boot - 将日志发送到日志存储而不在 Spring Boot 中写入日志文件

有什么方法可以将日志发送到 ELK(日志存储),而无需使用日志返回配置在 Spring Boot 中写入日志文件

0 投票
1 回答
1028 浏览

java - 将异常与结构化参数一起记录

有谁知道将异常与结构化参数一起记录的最佳实践是什么?查看https://github.com/logstash/logstash-logback-encoder#customizing-stack-traces,建议不要使用它们,但没有提供替代方案。