搭建日志系统
-
1.新建项目
-
2.修改 pom.xml
-
3.创建配置文件
-
4.新建实体
-
5.新建 service 及实现类
-
6.新建控制器
-
7.测试结果
-
绝大多数项目在后台管理中都有日志管理。以前的日志信息是存储在 MySQL 中,日志随着项目运行时间会越来越多,一直存储在 MySQL 会导致查询降低。现在的日志信息通过 ELK 技术栈进行操作。存储在 Elasticsearch 中,可以更好的分析日志内容及更快查询效率
-
给定简单需求:
搭建日志系统,提供查询 Elasticsearch 中日志信息的接口
1.新建项目
创建一个新的Spring Boot项目,命名为ELK_Demo
。
你可以使用Spring Initializr(https://start.spring.io/) 或者你偏好的IDE来创建这个项目。
2.修改 pom.xml
在这个项目的基础上,我们将构建所需的最基本环境来满足日志系统的需求。以下是pom.xml
文件的基础配置:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
</parent>
<dependencies>
<!-- Spring Boot Web 依赖用于构建RESTful API -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Elasticsearch 依赖用于与Elasticsearch交互 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>4.0.1.RELEASE</version>
</dependency>
<!-- 对于日志相关操作,我们需要以下依赖 -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.6</version>
</dependency>
<!-- 其他可能需要的依赖 -->
</dependencies>
注意:以上依赖中,spring-data-elasticsearch
的版本号是示例,请根据实际情况选择合适的版本。如果项目中考虑使用Spring Cloud环境,则还需添加Eureka等相关依赖。
3.创建配置文件
在项目的src/main/resources
目录下创建一个application.properties
文件,配置Spring Boot项目和Elasticsearch的连接细节。
server.port=8080
spring.elasticsearch.rest.uris=http://localhost:9200
4.新建实体
在项目中创建一个日志实体类LogEntry
,它将映射到Elasticsearch中存储的日志结构。
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@Document(indexName = "log")
public class LogEntry {
@Id
private String id;
private String message;
private String level;
private Date timestamp;
// 构造器、getter和setter方法
}
5.新建 service 及实现类
创建一个日志服务接口LogService
以及它的实现类LogServiceImpl
,用于处理日志数据的存取。
public interface LogService {
List<LogEntry> findAllLogs();
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class LogServiceImpl implements LogService {
@Autowired
private LogRepository logRepository;
@Override
public List<LogEntry> findAllLogs() {
return logRepository.findAll();
}
}
6.新建控制器
创建一个REST控制器LogController
,通过HTTP请求暴露查询日志的接口。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/logs")
public class LogController {
@Autowired
private LogService logService;
@GetMapping
public List<LogEntry> getAllLogs() {
return logService.findAllLogs();
}
}
7.测试结果
启动Spring Boot应用,并通过浏览器或者Postman访问 http://localhost:8080/logs
来测试日志查询接口。你应该能看到从Elasticsearch检索到的日志数据。
通过以上步骤我们搭建了一个简单的日志系统,它不仅能将日志信息存储在Elasticsearch中,还提供了一个简单的REST API接口来查询日志数据,
大大提高了查询效率并方便了日志内容的分析。随着项目的扩展,可以进一步优化和增强这个系统的功能。