Springboot 動態指定日誌位置

Springboot指定日誌位置,其實很簡單:

java -jar -Dlogging.file=/home/user1/logs/a.log a.jar

啓動,很正常,a.log自動生成,但是運行一段時間後,貌似日誌達到一個量級(10MB左右)後,這個a.log自動消失了~~

取而代之的是  a.log.日期.tmp,變成了一個臨時文件。

進程還在,日誌沒地方看了..........

看來這種方式並不是很完美啊,應用是默認的log參數配置,不能省事啊,所以我們還是需要相應的日誌門面,在springboot(2.0+)項目中加入logback.xml,內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<contextName>test-a</contextName> 
	
	
	<!-- RollingFileAppender:滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其他文件 -->
    <!-- 以下的大概意思是:1.先按日期存日誌,日期變了,將前一天的日誌文件名重命名爲XXX%日期%索引,新的日誌仍然是demo.log -->
    <!--             2.如果日期沒有發生變化,但是當前日誌的文件大小超過1KB時,對當前日誌進行分割 重命名-->
	<appender name="TEST-A" class="ch.qos.logback.core.rolling.RollingFileAppender">    
        <File>${logging.file}</File>    
        <!-- rollingPolicy:當發生滾動時,決定 RollingFileAppender 的行爲,涉及文件移動和重命名。 -->
        <!-- TimeBasedRollingPolicy: 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">    
            <!-- 活動文件的名字會根據fileNamePattern的值,每隔一段時間改變一次 -->
            
            <fileNamePattern>${logging.file}.%d.%i.log</fileNamePattern> 
            <!-- 每產生一個日誌文件,該日誌文件的保存期限爲30天 --> 
            <maxHistory>30</maxHistory>   
            <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">    
                <!-- maxFileSize:這是活動文件的大小,默認值是10MB,可改成KB -->  
                <maxFileSize>300MB</maxFileSize>    
            </timeBasedFileNamingAndTriggeringPolicy>    
        </rollingPolicy>    
        <encoder>    
            <!-- pattern節點,用來設置日誌的輸入格式 -->
            <pattern>    
                %d %p (%file:%line\)- %m%n  
            </pattern>    
            <!-- 記錄日誌的編碼:此處設置字符集 - -->
            <charset>UTF-8</charset>
        </encoder>    
    </appender>
    
    <!-- 總體設置日誌級別:級別依次爲【從高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  -->
	<!-- 部署時改成 MY-DEFIEND -->
	<root level="INFO">
		<appender-ref ref="TEST-A" />
	</root>
	
	
</configuration>

注意上面的<File>${logging.file}</File>,這裏是引用我們-Dlogging.file的參數,-D是JVM參數,logback裏是可以獲取到的。

至於我爲啥這麼麻煩,用了logback還要指定-D參數,是因爲業務需求呀,log的目錄是動態的是啓動時確定位置的,不是固定的。

我暫時只能想到這一種辦法處理動態日誌的位置了....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章