在上一篇博文中,我们开发了一个基本的微服务,在本篇博文中,我们将在加入日志,健康监测方面的内容。
在应用中加入日志功能,是一项基本的需求。我们在这里介绍的只是针对单个微服务的日志功能。
我们首先在应用配置文件application.yaml中加入日志定义功能:
logging:
pattern:
console: "%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"
file: "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
level:
org.springframework.web: DEBUG
file: app.log
我们定义了日志格式和日志文件。在程序中使用日志功能很简单,我们以在DemoController类中写日志为例:
@RestController
@RequestMapping("/person")
public class DemoController {
org.slf4j.Logger LOGGER = org.slf4j.LoggerFactory.getLogger(DemoController.class);
......
@GetMapping("/{personId}")
public Person findById(@PathVariable("personId") Long personId,
HttpServletRequest request) {
String mode = request.getParameter("mode");
LOGGER.info("test: {}", "abc");
return persons.stream().filter(item -> item.getPersonId().equals(personId)).findFirst().get();
}
我们在每个类中定义一个Logger LOGGER变量,在写日志时调用LOGGER.info/debug/trace/warn/error来写不同级别的日志。
应用健康监测
在项目根目录下的pom.xml文件中添加如下信息:
<!-- 开始:应用健康管理 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 结束:应用健康管理 -->
此时我们启动应用,在浏览器上访问:
http://localhost:2208/acuator
{"_links":{"self":{"href":"http://localhost:2208/actuator","templated":false},"health":{"href":"http://localhost:2208/actuator/health","templated":false},"health-path":{"href":"http://localhost:2208/actuator/health/{*path}","templated":true},"info":{"href":"http://localhost:2208/actuator/info","templated":false}}}
我们可以添加应用信息,在application.yaml文件中添加如下内容:
info:
name: ${spring.application.name}
build:
name: ${project.name:}
artifact: ${project.arfitactId:}
version: ${project.version:}
time: ${build.time:}
此时访问http://localhost:2208/acuator/info可以看到程序的基本信息。