application.properties
logging.config=classpath:logback.xml
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>ip:4560</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<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>
<root level="INFO">
<appender-ref ref="LOGSTASH" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
java
package com.example.elkdemo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Controller {
private final Logger logger = LoggerFactory.getLogger(Controller.class);
@GetMapping("/")
public String test(){
logger.debug("This is a debug message");
logger.info("This is an info message");
logger.warn("This is a warn message");
logger.error("This is an error message");
return "hello";
}
@RequestMapping("/springboot")
public String Hello() {
logger.debug("T念佛爱的解放军殴打司机开发ge");
logger.info("This is 的解放军殴打司机开发 info message");
logger.warn("This is a warn message");
logger.error("This is an error message");
return "Hello SpringBoot!";
}
}
依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
logstash配置
input{
# tcp {
##host:port就是上面appender中的 destination,这里其实把logstash作为服务,开启9250端口接收logback发出的消息
# host => "114.55.107.88"
# port => 4560
#模式选择为server
# mode => "server"
# tags => ["tags"]
##格式json
# codec => json_lines
#}
beats{host => "ip" port => 5044}
}
filter {
}
output {
#标准输出
stdout {
codec => rubydebug
}
elasticsearch {
hosts => [ "ip:9200" ]
}
}