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級別日志
文末結(jié)語
動態(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 Boot/Spring Session/Redis的分布式Session共享解決方案
本篇文章主要介紹了詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06Eclipse創(chuàng)建java程序可執(zhí)行jar包教程
這篇文章主要為大家分享了Eclipse創(chuàng)建java程序可執(zhí)行jar包教程,具有一定的實用性和參考價值,感興趣的小伙伴們可以參考一下2016-05-05Kotlin中l(wèi)et、run、with、apply及also的用法和差別
作用域函數(shù)是Kotlin比較重要的一個特性,分為5種let、run、with、apply及also,這五個函數(shù)的工作方式非常相似,但是我們需要了解這5種函數(shù)的差異,以便在不同的場景更好的利用它,這篇文章主要介紹了Kotlin中l(wèi)et、run、with、apply及also的差別,需要的朋友可以參考下2023-11-11JAVA使用POI獲取Excel的列數(shù)與行數(shù)
Apache POI 是用Java編寫的免費開源的跨平臺的 Java API,Apache POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。 下面這篇文章給大家介紹了JAVA使用POI獲取Excel列數(shù)和行數(shù)的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12