我有一个 Spring Boot 应用程序。我想将日志发送到 ElasticSearch,以便稍后我可以使用 Kibana 制作一些仪表板和统计数据。这是我的
logback.xml
文件
<configuration>
<appender name="ELASTICSEARCH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:9200</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"index":"sdk-logs"}</customFields>
<pattern>%magenta(%d{HH:mm:ss.SSS}) %highlight([%thread]) %-5level [userId: %X{orgid}] %cyan(%logger{36}) -
%blue(%msg%n)
</pattern>
<index>sdk-logs</index>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="ELASTICSEARCH"/>
</root>
</configuration>
据我了解,这应该会自动在 ElasticSearch 上创建一个名为 sdk-logs 的索引,并将日志发送到该索引。 ElasticSearch 和 Kibara 已进行 Docker 化并在端口
5601
和 9200
上运行。要启动应用程序,我需要添加此依赖项:
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>7.4</version>
</dependency>
整个设置不起作用。该应用程序未在 ElasticSearch 上创建索引。我试图用 http://localhost:9200/_cat/indices?v
来确认health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .geoip_databases B_c2UakQQLeqPbh_h6zqqQ 1 0 42 38 39.3mb 39.3mb
green open .kibana_7.15.0_001 TT0Zy7fcTw23_8jMII4XJg 1 0 102 20 2.3mb 2.3mb
green open .apm-custom-link Nh-LWRvOQB2wuabBUlDwgg 1 0 0 0 208b 208b
green open .kibana-event-log-7.15.0-000001 TNnCY1x6Q6mtCCs5seau9A 1 0 2 0 11.9kb 11.9kb
green open .apm-agent-configuration tbmgbDmjSvWjE2qdRGaQpQ 1 0 0 0 208b 208b
green open .async-search ca5hu_yXQcyNjqCqC3JoOA 1 0 0 2 3.4kb 3.4kb
green open .kibana_task_manager_7.15.0_001 NaHmMJZTQ6aQYekhgKO3hw 1 0 15 2580 668.7kb 668.7kb
green open .tasks ppCejuqLQO6hW6RDyVeOvg 1 0 2 0 7.8kb 7.8kb
我不确定我错过了什么,但应用程序正在记录这个
警告 net.logstash.logback.appender.LogstashTcpSocketAppender[ELASTICSEARCH] -记录目标 localhost/:9200:尝试重新连接之前等待 29993 毫秒。
logstash-logback-encoder
用于将日志发送到logstash,而不是直接发送到ElasticSearch。您需要部署一个logstash实例。