事件不会从我的Spring Boot应用程序发送到logstash。这里是我的logback.xml文件:SpringBoot - > Logback - > Logstash
<configuration>
<appender name="STASH-C" class="net.logstash.logback.appender.LogstashAccessTcpSocketAppender">
<destination>arc-poc01:5044</destination>
<encoder class="net.logstash.logback.encoder.LogstashAccessEncoder" />
<keepAliveDuration>5 minutes</keepAliveDuration>
</appender>
<appender name="STASH-B" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>arc-poc01:5045</destination>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder" >
<providers>
<timestamp/>
<version/>
<loggerName/>
<pattern>
<pattern>
{
"custom_constant": "cfg",
"level": "%level",
"thread": "%thread",
"message": "%message"
}
</pattern>
</pattern>
</providers>
</encoder>
<keepAliveDuration>5 minutes</keepAliveDuration>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder
by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="com.gw.test" level="INFO" />
<logger name="org.springframework" level="INFO" />
<logger name="com.netflix.astyanax" level="INFO" />
<root level="DEBUG">
<appender-ref ref="STASH-B" />
<appender-ref ref="STASH-C" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
这里是我的logstash管道配置:
input {
tcp {
port => 5044
codec => json
data_timeout => -1
}
log4j {
mode => "server"
host => "0.0.0.0"
port => 5045
type => "log4j"
codec => json
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
hosts => [ "http://arc-poc01:9200" ]
}
}
当我运行正在生成的应用程序的控制台输出作为预期,但没有事件被发送到logstash。我跑卷曲-XGET的“localhost:9600/_node /统计/管道漂亮”,以验证流量,这里是输出:
{
"host" : "55357b6f0969",
"version" : "5.4.1",
"http_address" : "0.0.0.0:9600",
"id" : "65153f2f-10af-48c3-9be5-5db0913bf7d8",
"name" : "55357b6f0969",
"pipeline" : {
"events" : {
"duration_in_millis" : 0,
"in" : 0,
"filtered" : 0,
"out" : 0,
"queue_push_duration_in_millis" : 0
},
"plugins" : {
"inputs" : [ {
"id" : "45e636052face5ff7a0b8cb463fa2b88c59c5697-2",
"events" : {
"out" : 0,
"queue_push_duration_in_millis" : 0
},
"name" : "log4j"
}, {
"id" : "45e636052face5ff7a0b8cb463fa2b88c59c5697-1",
"events" : {
"out" : 0,
"queue_push_duration_in_millis" : 0
},
"name" : "tcp"
} ],
"filters" : [ ],
"outputs" : [ {
"id" : "45e636052face5ff7a0b8cb463fa2b88c59c5697-3",
"name" : "stdout"
}, {
"id" : "45e636052face5ff7a0b8cb463fa2b88c59c5697-4",
"name" : "elasticsearch"
} ]
},
"reloads" : {
"last_error" : null,
"successes" : 0,
"last_success_timestamp" : null,
"last_failure_timestamp" : null,
"failures" : 0
},
"queue" : {
"type" : "memory"
},
"id" : "main"
}
}
有两者均显示我的春天启动应用程序的日志了任何错误或Logstash。在Spring Boot应用程序中配置logback时,是否存在特定的问题?我花了2天时间研究这个问题,并用尽了想法。任何提示如何我可以解决这个问题将不胜感激!
1.你从应用服务器尝试连接到服务器logstash? 2.您可以尝试将输入TCP端口更改为5045,因为log4j appender似乎使用TCP发送方,并且TCP输入应该能够接收原始数据。 –
'json_lines'编解码器可能在您的喜好中表现得更加出色。 – sysadmin1138