目前正在集成elk,通过logstash收集logback产生的日志,elk已搭建好部署在同一台机器(我个人pc)
下面是logstash的配置作为服务通过tcp的方式收集日志
通过telnet的方式 能够 收集到数据 传给es
下面是logback的配置,logstash-logback-encoder已经添加到工程
下面是测试
程序运行后控制台可以输出日志 ,但是logstash并没有收集到日志es看不到。请问这是为什么啊???
你先output到标准输出上看看解析结果对不,然后调试没问题了再output到es
另外,你用log.error打印的日志根本不是json格式吧?你用json_line解析肯定有问题。
你好,我想问下,你最后弄好了吗?我也按照你的配置做了。可是logstash上接受不到。
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8"> <!-- encoder 可以指定字符集,对于中文输出有意义 -->
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:9250</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<!-- 设置日志级别 -->
<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="logstash" />
</root>
</configuration>
这个是maven里面的pom配置
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.2</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.5.1</version>
</dependency>
这个是我在logstash。conf中的配置,只在input中配置了这个tcp。然后output采用标准输出。
tcp{
mode => "server"
port => 9250
}
的配置。
1,在项目pom.xml文件中加上依赖:
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.8</version>
</dependency>
2,在项目logback.xml配置文件中加入一下代码:
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:4560</destination>
<!-- encoder is required -->
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
和下面:
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="rollingFile" />
<appender-ref ref="errorAppender" />
<appender-ref ref="OTHERPLACE"/>
<appender-ref ref="stash"/>
</root>
3,logstash bin 目录下的配置文件***.conf文件中:
input {
tcp {
port => 4560
codec => json_lines
}
}
output{
elasticsearch {
host => "localhost"
port => "9200"
protocol => "http"
index => "logstash-test"
}
}