使用 Logback 向 Logstash 中输出日志
-
1.修改 pom.xml
-
2.导入 logback.xml
-
3.新建启动类
-
需求:随意新建一个项目把输出到控制台的日志信息也输出到 Logstash 中。
1.修改 pom.xml
我们首先需要添加logstash-logback-encoder
依赖到我们的pom.xml
文件中。这个库能够帮助我们将Logback日志转换为JSON格式,并发送到Logstash。
不同版本的logstash-logback-encoder
会有不同的特性表现:
- 6.x版本:这个版本在输出日志到控制台的同时,不会显示额外的日志信息。
- 5.x版本:该版本在启动时会在控制台显示
logback.xml
配置文件的加载信息。
根据你的需要,可以选择合适的版本。下面是在pom.xml
中添加依赖的示例:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.6</version>
</dependency>
<!-- 其他依赖... -->
</dependencies>
请确保项目中其他依赖与此项兼容,避免发生冲突。
2.导入 logback.xml
接下来,我们需要在项目中添加一个logback.xml
配置文件。这个文件通常放在src/main/resources
目录下。这个配置文件定义了Logback的行为,包括如何格式化日志、输出日志等。
在logback.xml
文件中,我们将配置一个appender,它负责将日志数据编码并发送到Logstash。
<configuration>
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>logstash-host:logstash-port</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="INFO">
<appender-ref ref="stash" />
</root>
</configuration>
在配置文件中,需要将<destination>
标签的内容替换为你的Logstash服务器的地址和端口。
3.新建启动类
最后一步是创建你的启动类。如果你是在Spring Boot环境下工作,这个类将标记为@SpringBootApplication
,并且包含main
方法来启动应用。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
启动你的应用后,Logback会根据你在logback.xml
中的配置将日志发送到Logstash。这样,不仅可以在控制台查看日志输出,同时也能在Logstash中查看,进而在Elasticsearch中进行日志数据分析。
总结以上步骤,我们通过修改pom.xml
添加必要的依赖,导入了Logback的配置文件logback.xml
,并新建了一个启动类来启动Spring Boot应用。
这样,我们的应用就可以把日志同时输出到控制台和Logstash了。记得调整Logstash的配置,确保它能够接收并正确处理来自Logback的日志数据。