Java中l(wèi)ogback?自動刷新不生效的問題解決
一、背景
今天心血來潮,準(zhǔn)備測試一下項目中 logback 的自動刷新功能,但是測試時發(fā)現(xiàn)并不生效。logback 的配置如下:
<configuration? scan="true" scanPeriod="10 seconds">
可以看到,配置了 10s 的自動刷新
二、問題排查
排查這種問題最好的方法,看日志。所以我們需要先開啟 logback 自身運行時的日志,在配置項中增加一個 debug
配置,開啟方法如下:
<configuration? scan="true" scanPeriod="10 seconds" debug="true">
啟動項目,發(fā)現(xiàn)輸出了如下日志:
此異常日志不影響項目最終啟動成功。重點在這句話:
Failed to rename context [logback] as [nacos] java.lang.IllegalStateException: Context has been already given a name
通過日志猜測,是 nacos 自帶的 logback 影響了 springboot 服務(wù)中配置的 logback,導(dǎo)致自動刷新不生效
三、問題處理
我們選擇禁用掉 nacos 的 logback,在 nacos 官網(wǎng)找了一圈后,發(fā)現(xiàn)可以通過以下參數(shù)禁用 nacos.logging.default.config.enabled
,推薦兩種配置方式:
- 在啟動參數(shù)中添加:
-Dnacos.logging.default.config.enabled=false
- 在 springboot 的啟動類中,增加如下配置:
public static void main(String[] args) { // 禁用 nacos 的默認(rèn)日志 System.setProperty("nacos.logging.default.config.enabled", "false"); SpringApplication.run(OrderApplication.class, args); }
以上兩種方法均可。添加完成后,scanPeriod
的自動刷新就生效了。
另外說一個小坑,如果是在本地的 idea 中測試 logback 的自動刷新,記得在修改了 logback
的配置后,需要對文件進(jìn)行重新編譯(或者直接修改 target 下 classes 中的 logback
文件)
到此這篇關(guān)于Java中l(wèi)ogback 自動刷新不生效的問題解決的文章就介紹到這了,更多相關(guān)Java logback 自動刷新不生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java基于servlet使用組件smartUpload實現(xiàn)文件上傳
這篇文章主要介紹了java基于servlet使用組件smartUpload實現(xiàn)文件上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10Java實現(xiàn)圖片翻轉(zhuǎn)以及任意角度旋轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)圖片翻轉(zhuǎn)以及任意角度旋轉(zhuǎn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01spring-boot-starter-validation?校驗參數(shù)的實現(xiàn)
參數(shù)校驗在很多地方都可以用到,本文主要介紹了spring-boot-starter-validation?校驗參數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Java動態(tài)數(shù)組Arraylist存放自定義數(shù)據(jù)類型方式
這篇文章主要介紹了Java動態(tài)數(shù)組Arraylist存放自定義數(shù)據(jù)類型方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10Java的線程池ThreadPoolExecutor及多種線程池實現(xiàn)詳解
這篇文章主要介紹了Java的線程池ThreadPoolExecutor及多種線程池實現(xiàn)詳解,ThreadPoolExecutor 使用 int 的高 3 位來表示線程池狀態(tài),低 29 位表示線程數(shù)量,之所以將信息存儲在一個變量中,是為了保證原子性,需要的朋友可以參考下2024-01-01SpringBoot集成Prometheus實現(xiàn)監(jiān)控的過程
這篇文章主要介紹了SpringBoot集成Prometheus實現(xiàn)監(jiān)控,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09