spring boot線上日志級別動態(tài)調(diào)整的配置步驟

前言
日志模塊是每個項目中必須的,用來記錄程序運行中的相關信息。一般在開發(fā)環(huán)境下使用DEBUG級別的日志輸出,為了方便查看問題,而在線上一般都使用INFO級別的日志,主要記錄業(yè)務操作的日志。那么問題來了,當線上環(huán)境出現(xiàn)問題希望輸出DEBUG日志信息輔助排查的時候怎么辦呢?修改配置文件,重新打包然后上傳重啟線上環(huán)境,之前確實是這么做的。下面會介紹使用動態(tài)調(diào)整線上日志級別來解決這個問題。
正文
spring boot版本:1.5.7
實現(xiàn)起來超級簡單,使用spring boot自帶的LoggingSystem的api來動態(tài)設置日志級別,當然的項目需要提供動態(tài)調(diào)整的接口,來達動態(tài)調(diào)整的目的。不過博主項目使用了Apollo配置中心,利用其配置動態(tài)生效的特性,soso就搞定了,代碼如下
@Service
public class DynamicLoggersConfig{
Logger logger= LoggerFactory.getLogger(getClass());
@ApolloConfig
private Config config;
private final static String LoggerTag="logging.level.";
private final LoggingSystem loggingSystem;
public DynamicLoggersConfig(LoggingSystem loggingSystem) {
Assert.notNull(loggingSystem, "LoggingSystem must not be null");
this.loggingSystem = loggingSystem;
}
@ApolloConfigChangeListener
private void configChangeListter(ConfigChangeEvent changeEvent){
SetkeyNames=config.getPropertyNames();
for (String key:keyNames){
if (StringUtils.containsIgnoreCase(key,LoggerTag)){
String strLevel=config.getProperty(key,"info");
LogLevel level = LogLevel.valueOf(strLevel.toUpperCase());
loggingSystem.setLogLevel(key.replace(LoggerTag,""),level);
logger.info("{}:{}",key,strLevel);
}
}
}
}配置
和在spring環(huán)境下正常配置日志級別一樣配置即可,如
logging.level.org.springframework = info logging.level.com.yudianbank.sales = debug logging.level.org.hibernate = info
如上代表spring體系工具開啟INFO級別日志,業(yè)務系統(tǒng)開啟DEBUG級別日志,hibernate開啟INFO級別日志
文末結語
動態(tài)日志輸出看似小功能,卻能解決非常大的問題。各種環(huán)境bug排除都少不了看日志輸出。文件提到的Apollo是攜程開源的配置中心項目,順道推廣下,感謝攜程開源給了我們這么好的產(chǎn)品。項目地址如下
Apollo項目地址:https://github.com/ctripcorp/apollo
以上就是spring boot線上日志級別動態(tài)調(diào)整的配置步驟的詳細內(nèi)容,更多關于spring boot線上日志級別動態(tài)調(diào)整的資料請關注腳本之家其它相關文章!
相關文章
Spring Cloud Alibaba和Dubbo融合實現(xiàn)
這篇文章主要介紹了Spring Cloud Alibaba和Dubbo融合實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04
如何解決IDEA使用Tomcat控制臺中文出現(xiàn)亂碼問題
這篇文章主要介紹了如何解決IDEA使用Tomcat控制臺中文出現(xiàn)亂碼問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09
Java TimeoutException:服務調(diào)用超時異常的正確解決方案
在現(xiàn)代軟件開發(fā)中,服務間通信是構建分布式系統(tǒng)的基礎,然而,網(wǎng)絡延遲、服務負載、資源競爭等因素都可能導致服務調(diào)用超時,TimeoutException是Java中表示服務調(diào)用超時的常見異常之一,本文將探討TimeoutException的成因及解決方案,需要的朋友可以參考下2024-12-12
Spring Boot集成Redis實現(xiàn)緩存機制(從零開始學Spring Boot)
這篇文章主要介紹了Spring Boot集成Redis實現(xiàn)緩存機制(從零開始學Spring Boot),需要的朋友可以參考下2017-04-04

