SpringBoot-log4j2日志相關(guān)配置

一、想法

      項目中要記錄日志方便日后查詢,而springboot內(nèi)置了日志功能,由于度娘的強大,找到很多各種寫法的,于是便歸納了一下,方便使用。

二、SpringBoot依賴

    創(chuàng)建SpringBoot項目的pom文件都會引用一個parent,進入parent會有日志的各種依賴,這時就不用自己添加依賴 如下:
image.png

三、log4j具體配置

     <?xml version="1.0" encoding="UTF-8"?><configuration>
<Properties>
    <Property name="LOG_PATTERN">
        "%highlight{[%-5p] %d %c - %m%n}{FATAL=red, ERROR=red, WARN=white, INFO=blue, DEBUG=yellow,TRACE=cyan}"
    </Property>
    <Property name="LOG_FILE_PATH">./logs</Property>
</Properties>
<appenders>
    <!-- 控制臺輸出 -->
    <Console name="CONSOLE" target="SYSTEM_OUT">
        <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout charset="UTF-8" pattern="${LOG_PATTERN}"/>
    </Console>
    <!-- fileName:輸出路徑  filePattern:命名規(guī)則 -->
    <RollingFile name="runtimeFile" fileName="${LOG_FILE_PATH}/utsapi.log"
                 filePattern="${LOG_FILE_PATH}/utsapi-%d{yyyy-MM-dd}.%i.log">
        <Filters>
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
        </Filters>
        <!-- 輸出格式 -->
        <PatternLayout charset="UTF-8" pattern="${LOG_PATTERN}"/>
        <Policies>
            <!-- SizeBasedTriggeringPolicy單個文件的大小限制 -->
            <SizeBasedTriggeringPolicy size="100KB"/>
            <!-- 每天創(chuàng)建一個日志文件 -->
            <!--                <TimeBasedTriggeringPolicy interval="1" />-->
        </Policies>
        <!-- DefaultRolloverStrategy同一個文件下的最大文件數(shù) -->
        <DefaultRolloverStrategy max="2">
            <Delete basePath="${LOG_FILE_PATH}" maxDepth="2">
                <IfFileName glob="*.log"/>
                <!--age 保存天數(shù) 數(shù)字最好>2, 否則可能造成刪除的時候, 最近的文件還處于被占用狀態(tài),導(dǎo)致刪除不成功!-->
                <IfLastModified age="3d"/>
            </Delete>
        </DefaultRolloverStrategy>
    </RollingFile>
</appenders>
<loggers>
    <!--過濾掉spring無用的debug信息-->
    <!--        <logger name="org.springframework" level="error"></logger>-->
    <root level="DEBUG">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="runtimeFile"/>
    </root>
</loggers></configuration>

注意:
basePath 定義了掃描日志文件的根門路。
maxDepth 定義了遍歷的層級,1示意 bashPath 下的所有文件
IfFileName 定義了掃描的文件格式
IfLastModified 定義了只有在最初拜訪工夫在3天以上的才會被刪除

刪除操作只會產(chǎn)生在日志滾動時,而滾動的機會取決于 filePattern 和 Triggering Policies (下面配置中 Policies 局部)
IfFileName 指定刪除的文件格式,只有符合條件都會被刪除,并沒有限度是通過以后服務(wù)輸入。下面這樣配置是為了只刪除歷史日志文件。
IfFileName 和 IfLastModified 都屬于 pathConditions。pathConditions 是一個數(shù)組,決定哪些文件會被刪除,如果定義了多個,須要多個條件同時滿足才會被刪除。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容