解決springboot使用logback日志出現LOG_PATH_IS_UNDEFINED文件夾的問題

application.properties

加入以下配置

#logback home
logging.path=D:/logs/esb-producer

logback.xml

	<property name="LOG_PATH" value="${LOG_PATH:- }" />
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <File>${LOG_PATH}/info.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/info-%d{yyyyMMdd}.log.%i</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>20MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>2</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
            </Pattern>
        </layout>
    </appender>

重點是這段<property name="LOG_PATH" value="${LOG_PATH:- }" />

${LOG_PATH:-} 用法

  •  首先LOG_PATH是什麼它不是你application.properties配置的 logging.path key, LOG_PATH 是logging.path的系統環境變量(請參考下圖)直接引用在,不要直接引用logging.path 是引用不到的
  • LOG_PATH = D:/logs/esb-producer
  • -表示分割符,後面的參數是默認路徑
  • .表示當前項目根路徑也可以是/usr/local/log…舉一反三
  • so ${LOG_PATH:-.} =${D:/logs/esb-producer-當前項目根路徑}
  • 這種方式有可能會生成倆個日志路徑 一個是 D:/logs/esb-producer 另一個是在當前項目根路徑生成的日志 因為spring比logback先啟動 所以會在項目更目錄生成一個spring的日志 這個就比較惡心瞭 我想把日志輸出到一起怎麼做呢

${LOG_PATH:- } 默認路徑設置成空格這樣就不會在你的項目根目錄生成spring日志文件瞭(會在你服務器根目錄生成)接下來系統日志就會輸出到你的自定義目錄瞭

logback配置

在這裡插入圖片描述

到此這篇關於解決springboot使用logback日志出現LOG_PATH_IS_UNDEFINED文件夾的問題的文章就介紹到這瞭,更多相關springboot logback LOG_PATH_IS_UNDEFINED內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!