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

spring-boot - 未设置 logback logstash 编码器 Syslog 标头

我正在尝试以 JSON 格式将 Java 日志记录到 Syslog,但我发现了一个奇怪的问题,即 Syslog 标头未按预期设置。

我在 Mac 上对此进行测试,并在数据包被发送到 UDP 514 端口(通过环回接口)时使用 Wireshark 抓取数据包

我的 logback.xml 如下:

当我查看wireshark的输出时,我只看到记录了JSON(没有给出PRI标头字段)

如果我切换到标准 logback Syslog appender(非 JSON 输出)

我确实在wireshark数据包中看到了正确的标头设施原始值<174>和解析值LOCAL5.INFO

需要 syslog 标头(在 syslog conf 中)将日志消息路由到正确的文件,因此如果没有这个,我将无法根据设施过滤器过滤掉日志条目。

我正在使用 SpringBoot (1.2.7),(它使用 logback 1.1.3),apache camel (2.16.1) 和 logstash-logback-encoder (4.6)

当我在调试中运行时,看起来 SyslogStartConverter.convert 方法从未被调用过。

干杯罗伊

0 投票
1 回答
798 浏览

tcp - Logstash TCP 输入一旦出现就会检索所有过去的日志

应用程序 Logback 配置 -

Logstash 输入是 TCP 插件,输出是 ElasticSearch。最初 Logstash 服务器已关闭,应用程序不断生成日志。在 Kibana 中查看时,不会添加新日志。一段时间后,logstash 启动。现在在 Kibana 中查看日志时,似乎所有在 logstash 关闭时生成的日志都被刷新到 ES 并且可以查看。

我检查ss | grep 5001了logstash服务器何时关闭,端口5001处于CLOSED-WAIT状态并且队列为空。

这可能是什么原因?

0 投票
3 回答
1393 浏览

groovy - Logback.groovy LogstashEncoder 更改字段名称

我有一个 logback.groovy,它使用一些自定义字段将数据发送到网络上的 logstash:

到目前为止,一切都很好。但是,我需要清理一些对下游 elasticsearch 无效的字段名称。根据 LogstashEncoder 文档,可以这样实现:

这看起来不错,但我必须将其放入 logback.groovy 符号中。我尝试了哈希图、字符串等,但总是以Cannot cast object 'xxxx' with class 'xxxx' to class 'net.logstash.logback.fieldnames.LogstashFieldNames'

0 投票
1 回答
974 浏览

logback - 在 OnMarkerEvaluator 过滤器中使用通配符或正则表达式

我正在尝试编写一个接受所有标记的附加程序logstash-logback-encoder

我已经尝试了以下使用 logback1.0.7logstash-logback-encoder 4.6

……

但是它不起作用。似乎没有任何东西进入这个附加程序。

下面的过滤工作位相当繁琐

0 投票
1 回答
578 浏览

json - Handlebars-proto 和 logstash-logback-encoder slf4j 冲突

我的项目使用handlebars-proto 将模板绑定到json。另外我正在尝试使用logstash-logback-encoder 以Json 的形式登录logstash。以下是我的编译依赖项(以及其他依赖项)

如果我删除车把依赖记录工作正常。如果存在车把,我会收到以下警告:

SLF4J:类路径包含多个 SLF4J 绑定。SLF4J:在 [jar:file:/C:/Users/manish/.gradle/caches/modules-2/files-2.1/com.github.jknack/handlebars-proto/4.0.5/5979737344d99e0d8b482e828f247ae86fd0113/handlebars-proto 中找到绑定-4.0.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J:在 [jar:file:/C:/Users/manish/.gradle/caches/modules-2/files-2.1/ch 中找到绑定.qos.logback/logback-classic/1.1.6/665e3de72f19ec66ac67d82612d7b8e6b3de3cd0/logback-classic-1.1.6.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J:见http://www.slf4j.org/codes .html#multiple_bindings进行解释。

其次是错误:

无法实例化 [ch.qos.logback.classic.LoggerContext] 报告异常: java.lang.NoSuchMethodError: ch.qos.logback.core.spi.ContextAwareBase.(Lch/qos/logback/core/spi/ContextAware;)V 在 net.logstash.logback.composite.CompositeJsonFormatter.(CompositeJsonFormatter.java:106) 在 net.logstash.logback.composite.loggingevent.LoggingEventCompositeJsonFormatter.(LoggingEventCompositeJsonFormatter.java:28) 在 net.logstash.logback.LogstashFormatter.(LogstashFormatter. java:122) 在 net.logstash.logback.LogstashFormatter.(LogstashFormatter.java:118) 在 net.logstash.logback.LogstashFormatter.(LogstashFormatter.java:114) 在 net.logstash.logback.encoder.LogstashEncoder.createFormatter(LogstashEncoder .java:31) 在 net.logstash.logback.encoder.CompositeJsonEncoder.(CompositeJsonEncoder.java:48) 在 net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder.(LoggingEventCompositeJsonEncoder.java:23) 在 net.logstash.logback.encoder。位于 sun.reflect 的 LogstashEncoder.(LogstashEncoder.java:27)。NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor. java:526) 在 java.lang.Class.newInstance(Class.java:379) 在 ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) 在 ch.qos.logback.core .joran.spi.Interpreter.callBeginAction(Interpreter.java:276) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) 在 ch.qos.logback.core.joran.spi .Interpreter.startElement(Interpreter.java:130) 在 ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)50)50)newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java: 526) 在 java.lang.Class.newInstance(Class.java:379) 在 ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) 在 ch.qos.logback.core.joran .spi.Interpreter.callBeginAction(Interpreter.java:276) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) 在 ch.qos.logback.core.joran.spi.Interpreter .startElement(Interpreter.java:130) 在 ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java: 526) 在 java.lang.Class.newInstance(Class.java:379) 在 ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) 在 ch.qos.logback.core.joran .spi.Interpreter.callBeginAction(Interpreter.java:276) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) 在 ch.qos.logback.core.joran.spi.Interpreter .startElement(Interpreter.java:130) 在 ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在 java.lang.Class.newInstance(Class .java:379) 在 ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) 在 ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) ) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) 在 ch。 qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在 java.lang.Class.newInstance(Class .java:379) 在 ch.qos.logback.core.joran.action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) 在 ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) ) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) 在 ch。 qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:379) at ch.qos.logback.core.joran .action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) 在 ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) 在 ch.qos.logback.core.joran.spi.Interpreter .startElement(Interpreter.java:148) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) 在 ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer .java:50)newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:379) at ch.qos.logback.core.joran .action.NestedComplexPropertyIA.begin(NestedComplexPropertyIA.java:122) 在 ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) 在 ch.qos.logback.core.joran.spi.Interpreter .startElement(Interpreter.java:148) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) 在 ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer .java:50)122) 在 ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) 在 ch .qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) 在 ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)122) 在 ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276) 在 ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148) 在 ch .qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130) 在 ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)

我尝试将 slf4j 排除为车把的传递依赖项,但它没有帮助。

提前感谢您的帮助。如果需要更多详细信息,请告诉我。

0 投票
2 回答
1541 浏览

java - 格式化 java 在 JSON 中注销以在 ELK Stack 中使用

我正在尝试以 JSON 格式输出我的记录器,这样我就可以消除在我的 ELK 堆栈中使用过滤器的需要。它似乎确实有效。

这是我所拥有的

输出到我的 file.log

输出到 logstash 控制台

我的问题

该消息似乎以字符串形式输出,我如何将其输出为 JSON,以便 Elasticsearch 可以获取各个字段并将它们编入索引,以便它们可以被搜索?

0 投票
0 回答
2104 浏览

spring-mvc - Spring-boot logstash-logback 配置失败

我正在使用 spring-boot 1.4.0。我想在我的应用程序中使用 logstash-logback-encoder 以便以 json 格式打印我的日志。我没有收到任何错误,但日志仍然以纯文本而不是 json 打印。请找到以下配置并请指导我解决这个问题。

pom.xml

logback-spring.xml

家庭控制器.java

配置类

我想以 json 格式打印记录器。应该感谢您的帮助。

0 投票
1 回答
942 浏览

json - 使用 logstash-logback-encoder 以 JSON 格式记录到文件失败

我有一个使用scala logging 3.5.0、logback-classic 1.1.7 的 Scala 应用程序。我可以毫无问题地登录到纯文本文件,但是(虽然我还没有使用 logstash),我想使用logstash-logback-encoder将日志文件格式更改为 JSON 。我更新的文件附加程序定义现在看起来像这样:

从文档看来,这应该以 JSON 格式记录到文件中,包含所有受支持的字段,但我在应用程序启动时收到一个空日志文件和以下错误消息:

我确定我遗漏了一些明显的东西;我的设置似乎与我见过的其他设置非常相似(它们只需要 JSON 文件日志记录,但尚未使用 logstash)。任何帮助将不胜感激!

0 投票
0 回答
290 浏览

json - serviceMix、pax-logging-logback、logstash-logback-encoder

我正在使用 pax-logging-logback 和 logstash-logback-encoder 将 json 格式登录到 logstash。现在我想通过使用来自 logstash-logback-encoder 的标记向 JSON 输出添加其他字段。

LogstashTcpSocketAppender 将 json 发送到 logstash,但没有附加字段(“msg”:“msg”)。当我尝试对简单的 maven 项目 LogstashTcpSocketAppender 使用相同的代码时,将字段添加到 json。

服务组合在方法`时不显示任何错误

是可执行的。

0 投票
1 回答
795 浏览

logstash - 无法使用 Logstash 中的 grok 从包含 JSON 和非 JSON 数据混合的日志行中提取字段

我在 Docker 容器中运行了几个 Spring Boot 应用程序。由于我不想登录到文件,我改为登录到控制台,然后使用logspout将日志转发到 Logstash。我正在使用logstash-logback-encoder以 JSON 格式记录来自应用程序的所有日志。

除此之外,还有一些日志(控制台输出)由 docker 容器在启动 Spring Boot 应用程序之前生成。这些不是 JSON 格式。

对于这两者,Logspout 在发送到 Logstash 之前会附加元数据(容器名称、容器 ID 等)。下面是我的两种格式的示例日志。

  1. 直接来自容器(无 JSON)

<14>1 2016-12-01T12:58:20Z 903c18d47759 com-test-myapp 31635 - - 设置活动配置文件进行测试

  1. 应用程序日志(JSON 格式)

<14>1 2016-12-01T13:08:13Z 903c18d47759 com-test-myapp 31635 - - {"@timestamp":"2016-12-01T13:08:13.651+00:00","@version":1 ,"message":"这里有一些日志消息","logger_name":"com.test.myapp.MyClass","thread_name":"http-nio-8080-exec-1","level":"DEBUG" ,"level_value":10000,"HOSTNAME":"903c18d47759"}

下面是我的 Logstash grok 配置。

基于此,我希望 JSON 中的每个字段都可用作 Elasticsearch/Kibana 中的过滤器。但我无法获得这些字段的价值。它在 Kibana 中显示如下: 在此处输入图像描述

我不确定我在这里缺少什么。我应该如何从 JSON 中提取字段?此外,grok 过滤器是否适用于处理 JSON 和非 JSON 日志?

谢谢,阿努普