傳統的做法一般是:
1、設定裡修改日誌等級
2、重啟應用程式
3、問題複現查看報錯日誌排查問題
這個過程需要重啟應用,比較麻煩,效率較低,而且針對大型線上項目,不可能隨便停機重啟。那麼有沒有一種方式在不重啟應用的情況下實現動態修改日誌等級呢?
下面,讓老萬教你如何透過SpringBoot的actuator元件來實現動態修改日誌等級。
一、新增依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
登入後複製
二、配置actuator暴露的連接埠
#启用actuator端口
management.endpoints.enabled-by-default=fasle
#设置actuator的访问根路径,默认是/actuator
management.endpoints.web.base-path=/message
#启用的端点
management.endpoints.web.exposure.include=loggers
登入後複製
這裡我修改了actuator的預設存取路徑/actuator,改為/message,為的是和專案的基礎存取路徑保存一致。
啟用連接埠的2中設定方法:
方式一:(建議)
management.endpoints.web.exposure.include=loggers
登入後複製
方式二:(這種方式測試沒有生效)
management.endpoint.loggers.enabled=true
登入後複製
補充:如何停用info連接埠
management.endpoints.enabled-by-default=false
management.endpoint.info.enabled=true
登入後複製
關於actuator元件被稱為spring boot的4大元件之一,功能強大,大家在網路上自己找些資料進一步了解。
actuator的endpoint連接埠說明:
ID | 描述 | 預設啟用 |
---|
auditevents | 顯示目前應用程式的稽核事件資訊 | Yes |
beans | 顯示一個應用程式中所有Spring Beans的完整清單 | Yes |
#conditions | 顯示設定類別和自動設定類別(configuration and auto- configuration classes)的狀態及它們被套用或未被應用的原因 | Yes |
configprops | 顯示一個所有@ConfigurationProperties的集合清單 | Yes |
env | 顯示來自Spring的ConfigurableEnvironment的屬性 | Yes |
flyway | 顯示資料庫遷移路徑,如果有的話 | Yes |
#health | 顯示應用程式的健康資訊(當使用一個未認證連線存取時顯示簡單的"status",使用認證連線存取則顯示全部資訊詳情) | Yes |
info | 顯示任意的應用程式資訊 | Yes |
liquibase | 展示任何Liquibase資料庫遷移路徑,如果有的話 | Yes |
metrics | 展示目前應用的metrics資訊 | Yes |
mappings | #顯示一個所有@RequestMapping路徑的集合清單 | Yes |
scheduledtasks | 顯示應用程式中的排程任務 | #Yes |
sessions | 允許從Spring會話支援的會話儲存中檢索和刪除(retrieval and deletion)使用者會話。使用Spring Session對反應性Web應用程式的支援時不可用。 | Yes |
shutdown | 允許應用程式以優雅的方式關閉(預設不啟用) | #No |
threaddump | 執行一個執行緒dump | Yes |
如果使用web應用(Spring MVC, Spring WebFlux, 或Jersey),你也可以使用以下端點:
#ID | 說明 | #預設啟用 |
#heapdum | 傳回一個GZip壓縮的hprof堆dump檔 | Yes |
jolokia | 透過HTTP暴露JMX beans(當Jolokia在類別路徑上時,WebFlux不可用) | Yes |
logfile | 返回日誌檔案內容(如果設定了logging.file或logging.path屬性的話),支援使用HTTP Range頭接收日誌檔案內容的部分資訊 | Yes |
prometheus | 以可以被Prometheus伺服器抓取的格式顯示metrics資訊 | Yes |
#要變更公開哪些端點,請使用下列技術特定的include和exclude屬性:
Property | #Default |
---|
##management. endpoints.jmx.exposure.exclude | * |
#management.endpoints.jmx.exposure.include | #* |
#management.endpoints.web.exposure.exclude | * |
management.endpoints.web.exposure.include | info, health |
include
属性列出了公开的端点的ID,
exclude
属性列出了不应该公开的端点的ID
exclude
属性优先于include属性。包含和排除属性都可以使用端点ID列表进行配置。
*可以用来选择所有端点。
例如,要通过HTTP公开除env和beans端点之外的所有内容,请使用以下属性:
management.endpoints.web.exposure.include=*
management.endpoints.web.exposure.exclude=env,beans
登入後複製
三、关闭鉴权
一般我们会将actuator和spring security鉴权组件结合使用,防止这些功能端口被随便调用。由于这里是功能演示,先放开actuator相关端口的权限认证。
此外,如果存在Spring Security,则需要添加自定义安全配置,以允许对端点进行未经身份验证的访问,如以下示例所示:放开所有Endpoint端点进行匹配
@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests()
.anyRequest().permitAll()
}
}
登入後複製
四 、通过/loggers端口查看日志级别
请求链接:http://localhost:8090/message/loggers
注意上面我说过的,我调整了management.endpoints.web.base-path=/message。如果没有设置此参数,则使用默认的/actuator去访问。
五、发起http请求修改日志级别
这里演示,修改目录com.wxswj.provider.message.controller的日志级别为debug
请求类型为POST,参数格式是JSON
curl -H "Content-Type: application/json" -X POST --data
"
{
"configuredLevel": "DEBUG"
}
"
http://localhost:8090/message/loggers/com.wxswj.provider.message.controller
登入後複製
大家可以在服务器上通过curl发起http请求,或者通过Postman发起请求。
curl -H "Content-Type: application/json" -X POST --data "{"configuredLevel": "DEBUG"}" http://localhost:8090/loggers/com.wxswj.provider.message.controller
登入後複製
六、查询日志级别修改结果
http://localhost:8090/message/loggers/com.wxswj.provider.message.controller
{
"configuredLevel": "DEBUG",
"effectiveLevel": "DEBUG"
}
登入後複製
说明我们的修改日志级别的请求生效。
以上是SpringBoot動態修改日誌等級的操作是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31