spring boot線上日志級(jí)別動(dòng)態(tài)調(diào)整的配置步驟
前言
日志模塊是每個(gè)項(xiàng)目中必須的,用來記錄程序運(yùn)行中的相關(guān)信息。一般在開發(fā)環(huán)境下使用DEBUG級(jí)別的日志輸出,為了方便查看問題,而在線上一般都使用INFO級(jí)別的日志,主要記錄業(yè)務(wù)操作的日志。那么問題來了,當(dāng)線上環(huán)境出現(xiàn)問題希望輸出DEBUG日志信息輔助排查的時(shí)候怎么辦呢?修改配置文件,重新打包然后上傳重啟線上環(huán)境,之前確實(shí)是這么做的。下面會(huì)介紹使用動(dòng)態(tài)調(diào)整線上日志級(jí)別來解決這個(gè)問題。
正文
spring boot版本:1.5.7
實(shí)現(xiàn)起來超級(jí)簡(jiǎn)單,使用spring boot自帶的LoggingSystem的api來動(dòng)態(tài)設(shè)置日志級(jí)別,當(dāng)然的項(xiàng)目需要提供動(dòng)態(tài)調(diào)整的接口,來達(dá)動(dòng)態(tài)調(diào)整的目的。不過博主項(xiàng)目使用了Apollo配置中心,利用其配置動(dòng)態(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)境下正常配置日志級(jí)別一樣配置即可,如
logging.level.org.springframework = info logging.level.com.yudianbank.sales = debug logging.level.org.hibernate = info
如上代表spring體系工具開啟INFO級(jí)別日志,業(yè)務(wù)系統(tǒng)開啟DEBUG級(jí)別日志,hibernate開啟INFO級(jí)別日志
文末結(jié)語
動(dòng)態(tài)日志輸出看似小功能,卻能解決非常大的問題。各種環(huán)境bug排除都少不了看日志輸出。文件提到的Apollo是攜程開源的配置中心項(xiàng)目,順道推廣下,感謝攜程開源給了我們這么好的產(chǎn)品。項(xiàng)目地址如下
Apollo項(xiàng)目地址:https://github.com/ctripcorp/apollo
以上就是spring boot線上日志級(jí)別動(dòng)態(tài)調(diào)整的配置步驟的詳細(xì)內(nèi)容,更多關(guān)于spring boot線上日志級(jí)別動(dòng)態(tài)調(diào)整的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案
本篇文章主要介紹了詳解基于Spring Boot/Spring Session/Redis的分布式Session共享解決方案 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06SpringBoot實(shí)現(xiàn)發(fā)送郵件任務(wù)
這篇文章主要為大家詳細(xì)介紹了SpringBoot實(shí)現(xiàn)發(fā)送郵件任務(wù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02Eclipse創(chuàng)建java程序可執(zhí)行jar包教程
這篇文章主要為大家分享了Eclipse創(chuàng)建java程序可執(zhí)行jar包教程,具有一定的實(shí)用性和參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05springboot寶塔簡(jiǎn)單部署的實(shí)現(xiàn)示例
通過使用Spring Boot,可以快速構(gòu)建出高效、可擴(kuò)展的應(yīng)用程序,而寶塔面板則提供了簡(jiǎn)單易用的網(wǎng)站管理和維護(hù)工具,本文將詳細(xì)介紹如何將Spring Boot應(yīng)用程序與寶塔面板進(jìn)行集成,實(shí)現(xiàn)自動(dòng)化部署、配置管理等操作2023-11-11Kotlin中l(wèi)et、run、with、apply及also的用法和差別
作用域函數(shù)是Kotlin比較重要的一個(gè)特性,分為5種let、run、with、apply及also,這五個(gè)函數(shù)的工作方式非常相似,但是我們需要了解這5種函數(shù)的差異,以便在不同的場(chǎng)景更好的利用它,這篇文章主要介紹了Kotlin中l(wèi)et、run、with、apply及also的差別,需要的朋友可以參考下2023-11-11JAVA使用POI獲取Excel的列數(shù)與行數(shù)
Apache POI 是用Java編寫的免費(fèi)開源的跨平臺(tái)的 Java API,Apache POI提供API給Java程式對(duì)Microsoft Office格式檔案讀和寫的功能。 下面這篇文章給大家介紹了JAVA使用POI獲取Excel列數(shù)和行數(shù)的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12