springboot配置logback.xml文件詳解

學習了下spring的日誌管理,具體的xml配置文件記錄如下,方便以後參考。

<?xml version="1.0" encoding="UTF-8"?>
<!-- configuration根節點
    屬性說明:
        scan:配置文件改變時是否重新加載 true表示是
        scanPeriod: 監視配置文件是否有修改的間隔時間,默認毫秒,scan爲true時才生效
        debug: 是否打印logback內部日誌信息 ,true表示是

     總體說明:根節點下有2個屬性,三個節點
        屬性: contextName 上下文名稱; property 設置變量
        節點: appender,  root, logger
      詳細說明見具體位置
 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!--
        contextName說明:
        每個logger都關聯到logger上下文,默認上下文名稱爲“default”。但可以使用設置成其他名字,
        用於區分不同應用程序的記錄。一旦設置,不能修改,可以通過%contextName來打印日誌上下文名稱。
     -->
    <contextName>train</contextName>
    <!--
        property說明:
        用來定義變量值的標籤, 有兩個屬性,name和value;其中name的值是變量的名稱,value的值時
        變量定義的值。通過定義的值會被插入到logger上下文中。定義變量後,可以使“${}”來使用變量。

        目前來說,可以直接配置屬性,或者引入外部配置文件方式。引入外部文件可用file或者resource屬性,
        但是推薦使用resouce屬性。file必須是絕對路徑,不推薦。
    -->
    <property resource="log-variables.properties"></property>
    <!--<property name="logback.path" value="F:\\workspaceScala\\log"/>-->
    <!--<property file="F:\workspaceScala\sprngbootjava\src\main\resources\log-variables.properties"></property>-->

    <!--輸出到控制檯-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--展示格式 layout-->
        <encoder>
            <charset>${charset}</charset>
            <pattern>${console.pattern}</pattern>
        </encoder>
    </appender>

    <!-- 日誌文件 級別:error -->
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- file設置打印的文件的路徑及文件名,建議絕對路徑 -->
        <file>${logback.path}\${error.file}</file>
        <!-- 追加方式記錄日誌,默認true -->
        <append>true</append>
        <!-- 過濾策略:
            LevelFilter : 只打印level標籤設置的日誌級別
            ThresholdFilter:打印大於等於level標籤設置的級別,小的捨棄
         -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
            <!-- 過濾的日誌級別 -->
            <level>${error.level}</level>
            <!--匹配到就允許-->
            <onMatch>ACCEPT</onMatch>
            <!--沒有匹配到就禁止-->
            <onMismatch>DENY</onMismatch>
        </filter>
        <!--
            日誌記錄器的滾動策略
            SizeAndTimeBasedRollingPolicy 按日期,大小記錄日誌
            另外一種方式:
                rollingPolicy的class設置爲ch.qos.logback.core.rolling.TimeBasedRollingPolicy
                triggeringPolicy標籤的class設置爲ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy
                意思是達到指定大小後重新寫文件
        -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--
                歸檔的日誌文件的路徑,例如今天是2018-08-23日誌,當前寫的日誌文件路徑爲file節點指定,
                可以將此文件與file指定文件路徑設置爲不同路徑,從而將當前日誌文件或歸檔日誌文件置不同的目錄。
                而2018-08-23的日誌文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引
             -->
            <FileNamePattern>${logback.path}\${error.fileNamePattern}</FileNamePattern>
            <!--
                配置日誌文件不能超過100M,若超過100M,日誌文件會以索引0開始,命名日誌文件
                例如error.20180823.0.txt
            -->
            <maxFileSize>100MB</maxFileSize>
            <!-- 只保留最近10天的日誌 -->
            <maxHistory>${error.maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <!-- 編碼格式 -->
            <charset>${charset}</charset>
            <!-- 指定日誌格式 -->
            <pattern>${error.pattern}</pattern>
        </encoder>
    </appender>

    <!-- 日誌文件 級別:warn -->
    <appender name="file_warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logback.path}\${warn.file}</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>${warn.level}</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <FileNamePattern>${logback.path}\${warn.fileNamePattern}</FileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>${warn.maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>${charset}</charset>
            <pattern>${warn.pattern}</pattern>
        </encoder>
    </appender>

    <!-- 日誌文件 級別:info -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logback.path}\${info.file}</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>${info.level}</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <FileNamePattern>${logback.path}\${info.fileNamePattern}</FileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>${info.maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <charset>${charset}</charset>
            <pattern>${info.pattern}</pattern>
        </encoder>
    </appender>

    <!--
        root指定最基礎的日誌輸出級別,level屬性指定
        appender-ref標識的appender將會添加到這個logger
    -->
    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_warn"/>
        <appender-ref ref="file_error"/>
    </root>

    <!--
        logger用來設置某一個具體的包或者類的日誌打印, name表明包路徑或類路徑,level指定打印級別,
        addtivity表示是否向上級logger(即,root)傳遞打印信息
        下例指定了warn及以上級別的日誌交給“console”appender打印,並且不向上傳遞。
    -->
    <logger name="com.lin.train.mapper" level="DEBUG" additivity="false">
        <appender-ref ref="console"/>
    </logger>

    <!--
        多環境日誌輸出:這裏不再詳細描述,個人感覺意義不大。無論生產還是開發,配置info級別就OK了
        相應標籤:springProfile
    -->
</configuration>

屬性文件如下:

#log.path=F:\\workspaceScala\\log\\train.log
#日誌文件路徑
logback.path=F:\\workspaceScala\\log
#日誌輸出編碼
charset=UTF-8

####################### 控制檯日誌 start ##########################
#日誌輸出格式
#console.pattern=[lf-1][service][%d{yyyy-MM-dd HH:MM:ss.SSS}] [%-5level] [%t] %msg%n
#%d [%thread] - %contextName %-5level %logger{36}.%M\(%file:%line\) - %msg%n
#說明:               時間                      日誌級別    應用上下文       線程名     類名方法名         消息  換行
console.pattern=%d{yyyy-MM-dd HH:mm:ss.sss} %-5level [%contextName] -- [%t] %logger{36}.%method: %msg%n
#日誌輸出級別
console.level=debug
####################### 控制檯日誌 end ############################

####################### info日誌 start ###########################
#日誌輸出格式
info.pattern=%d{yyyy-MM-dd HH:mm:ss.sss} %-5level [%contextName] -- [%t] %logger{36}.%method: %msg%n
#日誌輸出級別
info.level=info
#日誌文件路徑
info.file=info.log
#日誌文件名稱格式
info.fileNamePattern=info.%d{yyyy-MM-dd}.%i.txt
#日誌文件保留天數
info.maxHistory=7
####################### info日誌 end ############################

####################### warn日誌 start ###########################
#日誌輸出格式
warn.pattern=%d{yyyy-MM-dd HH:mm:ss.sss} %-5level [%contextName] -- [%t] %logger{36}.%method: %msg%n
#日誌輸出級別
warn.level=warn
#日誌文件路徑
warn.file=warn.log
#日誌文件名稱格式
warn.fileNamePattern=warn.%d{yyyy-MM-dd}.%i.txt
#日誌文件保留天數
warn.maxHistory=7
####################### warn日誌 end #############################

####################### error日誌 start ###########################
#日誌輸出格式
error.pattern=%d{yyyy-MM-dd HH:mm:ss.sss} %-5level [%contextName] -- [%t] %logger{36}.%method: %msg%n
#日誌輸出級別
error.level=error
#日誌文件路徑
error.file=error.log
#日誌文件名稱格式
error.fileNamePattern=error.%d{yyyy-MM-dd}.%i.txt
#日誌文件保留天數
error.maxHistory=10
####################### error日誌 end ###########################

第一次寫博客,希望能記錄自己更多的學習過程。
如有錯誤,歡迎指正。
附:參考鏈接如下:
http://tengj.top/2017/04/05/springboot7/
https://www.cnblogs.com/linkstar/p/8309039.html
https://www.cnblogs.com/lixuwu/p/5804793.html

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