關(guān)于logback日志級別動態(tài)切換的四種方式
生產(chǎn)環(huán)境中經(jīng)常有需要動態(tài)修改日志級別。
現(xiàn)在就介紹幾種方案
方案一:開啟logback的自動掃描更新
配置如下
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- configuration標簽 scan屬性代表logback框架會定時檢測改配置文件是否有發(fā)生改動,如果有則更新為最新配置-->
然后就將修改的配置文件拷貝到app.jar的同級目錄下config/logback.xml
方案二:自定義api
代碼如下
/** * log api * @author lipeng */ @RequestMapping("/api/log") @RestController public class LogbackController { private Logger log = LoggerFactory.getLogger(LogbackController.class); /** * logback動態(tài)修改包名的日志級別 * @param level 日志級別 * @param packageName 包名 * @return 當(dāng)前的日志級別 * @throws Exception */ @RequestMapping(value = "/setlevel") public String updateLogbackLevel( @RequestParam(value="level") String level, @RequestParam(value="packageName",defaultValue = "-1") String packageName) throws Exception { ch.qos.logback.classic.LoggerContext loggerContext =(ch.qos.logback.classic.LoggerContext) LoggerFactory.getILoggerFactory(); Logger logger= null if(packageName.equals("-1")) { // 默認值-1,更改全局日志級別;否則按傳遞的包名或類名修改日志級別。 logger= loggerContext.getLogger("root") } else { logger= loggerContext.getLogger(packageName) } logger.setLevel(ch.qos.logback.classic.Level.toLevel(level)); return logger.getLevel(); } }
方案三:springboot引入Actuator
1、pom.xml增加相關(guān)依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2、配置文件中增加配置
如果是springboot1.X,
management.security.enabled=false
如果是springboot2.X,則參考如下配置
management: endpoint: health: show-details: "ALWAYS" endpoints: web: exposure: include: "*"
3、查看級別
我們可以發(fā)送GET 請求到 http://localhost:8080/actuator/loggers 來獲取支持的日志等級,以及系統(tǒng)(ROOT)默認的日志等和各個包路徑(com.xxx.aa等)對應(yīng)的日志級別。
4、修改日志級別
通過 http://localhost:8080/actuator/loggers 端點提供的 POST 請求,修改包路徑com.xxx.aa的日志級別為DEBUG:
發(fā)送POST 請求到 http://localhost:8080/actuator/loggers/com.xxx.aa,其中請求 Body 的內(nèi)容如下:
{ "configuredLevel": "DEBUG" }
再用GET 訪問 http://localhost:8080/loggers/com.xxx.aa查看當(dāng)前的日志級別:
{ configuredLevel: "DEBUG", effectiveLevel: "INFO" }
方案四:集成springcloudadmin來動態(tài)修改配置
springcloudadmin安裝部署我就不做描述了,網(wǎng)上很多。
1、引入admin依賴
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2、登錄springcloudadmin
找到指定的服務(wù)中某一個節(jié)點
然后點擊左邊日期,進入控制臺,如下
這樣就能動態(tài)修改了,操作比較方便。
總結(jié)
在條件允許的情況下建議使用方案四
以上僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 學(xué)習(xí)筆記(入門篇)_程序流程控制結(jié)構(gòu)和方法
程序流程控制結(jié)構(gòu)分為:順序、選擇、循環(huán)以及異常處理結(jié)構(gòu),語句是程序的基本組成單位,一般來說語句的執(zhí)行流程是按順序來進行的,但是當(dāng)遇到一些特殊的條件,比如循環(huán),這時候語句就會按照流程控制結(jié)構(gòu)來進行了2013-01-01IDEA中SpringBoot項目的yml多環(huán)境配置方式
這篇文章主要介紹了IDEA中SpringBoot項目的yml多環(huán)境配置,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2023-10-10Spring中@Autowired和@Resource注解的使用區(qū)別詳解
這篇文章主要介紹了Spring中@Autowired和@Resource注解的使用區(qū)別詳解,@Autowired默認根據(jù)type進行注入,找到與指定類型兼容的?Bean?并進行注入,如果無法通過type匹配到對應(yīng)的?Bean?的話,會根據(jù)name進行匹配,如果都匹配不到則拋出異常,需要的朋友可以參考下2023-11-11