Spring?Boot指標監(jiān)控及日志管理示例詳解
一、添加Actuator功能
Spring Boot Actuator可以幫助程序員監(jiān)控和管理SpringBoot應用,比如健康檢查、內(nèi)存使用情況統(tǒng)計、線程使用情況統(tǒng)計等。我們在SpringBoot項目中添加Actuator功能,即可使用Actuator監(jiān)控
項目,用法如下:
在被監(jiān)控的項目中添加Actuator起步依賴
<!-- 指標監(jiān)控 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
在配置文件中開啟所有監(jiān)控端點
#開啟所有監(jiān)控端點 management.endpoints.web.exposure.include=*
測試:
訪問項目:http://localhost:8080/actuator
可以看到有很多json格式的字符串,這些都是該路徑下的相關資源信息,并且通過URL可以調(diào)用actuator的功能:
URL | 查看的數(shù)據(jù) |
---|---|
/env | 環(huán)境屬性 |
/health | 健康檢查 |
/mappings | 顯示所有的@RequestMapping路徑 |
/loggers | 日志 |
/info | 定制信息 |
/metrics | 查看內(nèi)存、CPU核心等系統(tǒng)參數(shù) |
/trace | 用戶請求信息 |
例如查詢?nèi)罩拘畔?shù)據(jù),訪問localhost:8080/actuator/loggers
二、SpringBoot指標監(jiān)控Spring Boot Admin
Actuator使用JSON格式展示了大量指標數(shù)據(jù),不利于我們查看,我們可以使用可視化工具Spring Boot Admin查看actuator生成指標數(shù)據(jù)。Spring Boot Admin是一個獨立的項目,我們需要創(chuàng)建并運
行該項目。
1. 創(chuàng)建Spring Boot Admin服務端項目
創(chuàng)建SpringBoot項目,添加SpringMVC和Spring Boot Admin服務端起步依賴
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
修改配置文件
因為這里是服務端項目,要監(jiān)控其他項目,因此要單獨設置一個端口,就為9090吧,然后再自定義一下日志格式
# 端口號
server.port=9090
#日志格式
logging.pattern.console=%d{YYYY-MM-dd HH:mm:ss.SSS} %clr(%-5level) --- [%-15thread] %cyan(%-50logger{50}):%msg%n
修改啟動類
這里我們需要在啟動類上方添加注解,證明這是一個指標監(jiān)控服務端
package com.example.springbootadmin; import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication // 開啟SpringBoot Admin Server端 @EnableAdminServer public class SpringbootadminApplication { public static void main(String[] args) { SpringApplication.run(SpringbootadminApplication.class, args); } }
運行項目
這里是還沒有連接項目進行指標監(jiān)控的
2. 連接Spring Boot Admin項目
同樣地,被監(jiān)控項目添加Spring Boot Admin客戶端起步依賴
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
修改配置文件
# 應用服務 WEB 訪問端口
server.port=8080
#Spring boot admin訪問地址
spring.boot.admin.client.url=http://localhost:9090
#日志格式
logging.pattern.console=%d{YYYY-MM-dd HH:mm:ss.SSS} %clr(%-5level) --- [%-15thread] %cyan(%-50logger{50}):%msg%n
運行項目
此時Spring Boot Admin即可連接被監(jiān)控的項目,再刷新就可以看到有實例連接成功。
三、SpringBoot日志管理
SpringBoot默認使用Logback組件作為日志管理。Logback是log4j創(chuàng)始人設計的一個開源日志組件。在SpringBoot項目中我們不需要額外的添加Logback的依賴,因為在 spring-boot-parent 中已經(jīng)包含了Logback的依賴。
在 /resources 下添加Logback配置文件logback.xml
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <!--定義日志文件的存儲地址--> <property name="LOG_HOME" value="${catalina.base}/logs/"/> <!-- 控制臺輸出 --> <appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender"> <!-- 日志輸出編碼 --> <layout class="ch.qos.logback.classic.PatternLayout"> <!--格式化輸出:%d表示時間,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符--> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern> </layout> </appender> <!-- 按照每天生成日志文件 --> <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件輸出的文件名--> <FileNamePattern>${LOG_HOME}/server.%d{yy99-MM-dd}.log</FileNamePattern> <MaxHistory>30</MaxHistory> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <!--格式化輸出:%d表示時間,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符--> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern> </layout> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!-- 日志輸出級別 --> <root level="info"> <appender-ref ref="Stdout"/> <appender-ref ref="RollingFile"/> </root> </configuration>
注:Logback配置文件名為logback-test.xml或logback.xml,如果classpath下沒有這兩個文件,LogBack會自動進行最小化配置。
運行結果如下圖:
在代碼中打印日志
package com.example.springbootdlogback.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class PrintLogController { private final static Logger looger = LoggerFactory.getLogger(PrintLogController.class); @RequestMapping("/printlog") @ResponseBody public String showInfo(){ looger.info("記錄日志"); return "Hello Back!"; } }
如果日志過多,可以屏蔽一些包的日志,在配置文件中配置
#屏蔽org包中的日志輸出
logging.level.org=off
測試結果
到此這篇關于Spring Boot指標監(jiān)控及日志管理的文章就介紹到這了,更多相關Spring Boot指標監(jiān)控內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Spring?Boot指標監(jiān)控及日志管理示例詳解
- SpringBoot指標監(jiān)控功能實現(xiàn)
- SpringBoot2零基礎到精通之JUnit 5與指標監(jiān)控
- SpringBoot 指標監(jiān)控actuator的專題
- SpringBoot指標監(jiān)控的實現(xiàn)
- springboot Actuator的指標監(jiān)控可視化功能詳解
- Prometheus 入門教程之SpringBoot 實現(xiàn)自定義指標監(jiān)控
- 詳解基于SpringBoot使用AOP技術實現(xiàn)操作日志管理
- springboot配置logback日志管理過程詳解
相關文章
Spring Boot使用Druid和監(jiān)控配置方法
Druid是Java語言中最好的數(shù)據(jù)庫連接池,并且能夠提供強大的監(jiān)控和擴展功能。下面來說明如何在 Spring Boot 中配置使用Druid2017-04-04詳解SpringBoot中5種類型參數(shù)傳遞和json數(shù)據(jù)傳參的操作
當涉及到參數(shù)傳遞時,Spring?Boot遵循HTTP協(xié)議,并支持多種參數(shù)傳遞方式,這些參數(shù)傳遞方式可以根據(jù)請求的不同部分進行分類,2023-12-12Java數(shù)組的定義、初始化、及二維數(shù)組用法分析
這篇文章主要介紹了Java數(shù)組的定義、初始化、及二維數(shù)組用法,結合具體實例形式分析了java數(shù)組概念、功能、數(shù)組定義、靜態(tài)數(shù)組、動態(tài)數(shù)組、二維數(shù)組等相關使用技巧,需要的朋友可以參考下2019-01-01lazy?init控制加載在Spring中如何實現(xiàn)源碼分析
這篇文章主要為大家介紹了lazy?init控制加載在Spring中如何實現(xiàn)源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09