Springboot不同環境配置不同日志路徑以及LOG_PATH_IS_UNDEFINED錯誤


來源於   https://www.jianshu.com/p/637d075b5dd8

 

Springboot不同環境配置不同日志路徑以及LOG_PATH_IS_UNDEFINED錯誤


2019.12.10 16:11:01字數 893閱讀 142

1. 一個很常見的需求

  一個Springboot工程開發直到上線,需要有開發環境、測試環境、生產環境,各個環境對日志輸出的路徑要求是不一樣的,需要在不同環境的配置文件里指定不同環境的日志路徑(你可能不是使用這種方法,后面再說)。

2. 如果你去查資料,很容易找到以下方法

  Springboot工程可以設置不同環境的配置文件,比如開發環境application-dev.yml、測試環境application-test.yml、生產環境application-prod.yml,然后在這些yml文件里分別設置日志根目錄

logging: path: {你要的日志輸出目錄} 

在logback-spring.xml中通過

<springProperty scope="context" name="logPath" source="logging.path"/> 

就能獲得{你要的日志輸出目錄},然后在logback-spring.xml文件中就可以通過${logPath}獲取到這個目錄並使用。
  這個方法是可以的。但是有問題。

3. 2中方法的問題

  按照2中配置,啟動工程時,工程根目錄下會生成一個文件夾logPath_IS_UNDEFINED(請注意,到目前為止提到了3次logPath,如果你用的是別的名字,就是別的String,而不是固定的logPath),里面是日志文件,在你指定的日志輸出目錄,也會生成相應的日志文件。
我們仔細看兩處的日志文件,logPath_IS_UNDEFINED記錄的是Springboot的圖標出現之前的日志,指定目錄里面記錄的是Springboot的圖標出現之后的日志,Springboot圖標表示Springboot開始加載,這時候才能從yml文件讀取配置。Springboot圖標說的就是下面這個東西:

 
image.png

 

  最根本的原因:加載日志是在加載Springboot之前的,剛開始記錄日志的時候Springboot還沒有開始工作(這個順序是合理的,可以想想)。

4. 有沒有解決辦法?

  有。 參考文檔在最下面7中。

  1. 參考文檔1、2的方法,增加了一個默認日志存儲位置,實際上只是名字不叫logPath_IS_UNDEFINED,效果是一樣的。
  2. 參考文檔3說的方法,很麻煩,我跟作者一樣建議你不要用。
  3. 參考文檔4跟列出來,就是為了告訴你有的人真的是在抄教程,自己不試一試,然后還說親測可用。其中有一個人和3的觀點一樣。

5. 不解決行不行?

  行,因為加載日志配置的日志,丟了實在無關緊要。

6. 我就是要解決這個問題,還要簡潔一點,可不可以?

  可以。回到1中提到的“你可能不是使用這種方法,后面再說”,可以在命令行啟動jar包時,加上-Dlogging.path={你要的日志輸出目錄},不等Springboot去讀取yml配置文件,直接就有了日志目錄這個變量,交給logback-spring.xml文件去使用。
  有什么缺點?回到了原點,日志目錄還是運維去配置,而不能讓開發在配置文件中預先寫好。運維偷懶計划失敗。

7.參考

    1. http://www.pianshen.com/article/6905506476/
    2. https://www.jianshu.com/p/e326af51bee5
    3. https://www.cnblogs.com/InformationGod/p/9628065.html
    4. https://www.e-learn.cn/content/wangluowenzhang/642241

 

 

-----------------------------其實我的問題貌似不是上面的,我是IDEA開發環境中中不停的打----------------------------------------------------------------------------------------------------

CONSOLE_LOG_PATTERN_IS_UNDEFINED

只要加上  

<include resource="org/springframework/boot/logging/logback/base.xml" />

就搞定了

--------------------------------------------------------------------------------------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM