logback-spring.xml配置說明


logback-spring.xml的配置說明

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!--屬性1:每個logger都關聯到logger上下文,默認上下文名稱為“default”。但可以使用設置成其他名字,用於區分不同應用程序的記錄。一旦設置,不能修改,可以通過%contextName來打印日志上下文名稱。-->
    <contextName>spring-boot-test</contextName>

    <!--屬性2:定義日志文件的存儲地址 勿在 LogBack 的配置中使用相對路徑-->
    <property name="LOG_PATH" value="D:\data\logs"/>
    <!--appender用來格式化日志輸出節點,有倆個屬性name和class,class用來指定哪種輸出策略,常用就是控制台輸出策略和文件輸出策略。-->
    <!-- %m輸出的信息,%p日志級別,%t線程名,%d日期,%c類的全名,,,, -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <!--
                Filter為系統定義的攔截器,例如我們用ThresholdFilter來過濾掉ERROR級別以下的日志不輸出到文件中。如果不用記得注釋掉,不然你控制台會發現沒日志~
        -->
      <!--  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>-->
        <!--<encoder>表示對日志進行編碼:-->
        <!--
            %d{HH: mm:ss.SSS}——日志輸出時間
            %thread——輸出日志的進程名字,這在Web應用以及異步任務處理中很有用
            %-5level——日志級別,並且使用5個字符靠左對齊
            %logger{36}——日志輸出者的名字
            %msg——日志消息
            %n——平台的換行符
        -->
        <encoder>
            <pattern>1-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n</pattern>
            <charset>GBK</charset>
        </encoder>
    </appender>
    <!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
   <!-- <contextName>springboottest</contextName>-->

    <!--
          說明:
          1、日志級別及文件
              日志記錄采用分級記錄,級別與日志文件名相對應,不同級別的日志信息記錄到不同的日志文件中
              例如:error級別記錄到log_error_xxx.log或log_error.log(該文件為當前記錄的日志文件),而log_error_xxx.log為歸檔日志,
              日志文件按日期記錄,同一天內,若日志文件大小等於或大於2M,則按0、1、2...順序分別命名
              例如log-level-2013-12-21.0.log
              其它級別的日志也是如此。
          2、文件路徑
              若開發、測試用,在Eclipse中運行項目,則到Eclipse的安裝路徑查找logs文件夾,以相對路徑../logs。
              若部署到Tomcat下,則在Tomcat下的logs文件中
          3、Appender
              FILEERROR對應error級別,文件名以log-error-xxx.log形式命名
              FILEWARN對應warn級別,文件名以log-warn-xxx.log形式命名
              FILEINFO對應info級別,文件名以log-info-xxx.log形式命名
              FILEDEBUG對應debug級別,文件名以log-debug-xxx.log形式命名
              CONSOLE將日志信息輸出到控制上,為方便開發測試使用
       -->
    <!-- 日志記錄器,日期滾動記錄 -->
    <appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${LOG_PATH}/error/log_error.log</file>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日志文件的路徑,例如今天是2013-12-21日志,當前寫的日志文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。
            而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
           <!-- 表示只保留最近30天的日志,以防止日志填滿整個磁盤空間。-->
            <maxHistory>30</maxHistory>
            <!--用來指定日志文件的上限大小,例如設置為1GB的話,那么到了這個值,就會刪除舊的日志。-->
            <totalSizeCap>1GB</totalSizeCap>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過2M,若超過2M,日志文件會以索引0開始,
            命名日志文件,例如log-error-2013-12-21.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>2MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只記錄error級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 日志記錄器,日期滾動記錄 -->
    <appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${LOG_PATH}/warn/log_warn.log</file>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日志文件的路徑,例如今天是2013-12-21日志,當前寫的日志文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。
            而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過2M,若超過2M,日志文件會以索引0開始,
            命名日志文件,例如log-error-2013-12-21.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>2MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只記錄war級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 日志記錄器,日期滾動記錄 -->
    <appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${LOG_PATH}\info\log_info.log</file>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日志文件的路徑,例如今天是2013-12-21日志,當前寫的日志文件路徑為file節點指定,可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。
            而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}\info\log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過2M,若超過2M,日志文件會以索引0開始,
            命名日志文件,例如log-error-2013-12-21.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>2MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只記錄info級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--日志異步到數據庫  -->
    <!--<appender name="DBAPPENDER" class="ch.qos.logback.classic.db.DBAppender">-->
    <!--<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">-->
    <!--<dataSource class="com.zaxxer.hikari.HikariDataSource">-->
    <!--<driverClassName>com.mysql.jdbc.Driver</driverClassName>-->
    <!--<jdbcUrl>jdbc:mysql://localhost:3306/albedo-new?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false</jdbcUrl>-->
    <!--<username>root</username>-->
    <!--<password>123456</password>-->
    <!--<poolName>HikariPool-logback</poolName>-->
    <!--</dataSource>-->
    <!--</connectionSource>-->
    <!--&lt;!&ndash; 此日志文件只記錄info級別的 &ndash;&gt;-->
    <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
    <!--<level>warn</level>-->
    <!--<onMatch>ACCEPT</onMatch>-->
    <!--<onMismatch>DENY</onMismatch>-->
    <!--</filter>-->
    <!--&lt;!&ndash; 此日志文件只記錄info級別的 &ndash;&gt;-->
    <!--<filter class="ch.qos.logback.classic.filter.LevelFilter">-->
    <!--<level>error</level>-->
    <!--<onMatch>ACCEPT</onMatch>-->
    <!--<onMismatch>DENY</onMismatch>-->
    <!--</filter>-->
    <!--</appender>-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%black(控制台-) %red(%d{yyyy-MM-dd HH:mm:ss.SSS})  %green([%thread]) %highlight(%-5level) %boldMagenta(%logger) Line:%-3L - %cyan(%msg%n)</pattern>
            <!--<charset>GBK</charset>-->
        </encoder>
    </appender>
<!--
    <logger>用來設置某一個包或者具體的某一個類的日志打印級別、以及指定<appender>。<logger>僅有一個name屬性,一個可選的level和一個可選的addtivity屬性。
-->
    <logger name="com.yxm.test" level="DEBUG"/>
    <logger name="org.springframework" level="INFO"/>
    <logger name="org.apache" level="ERROR"/>
    <logger name="org.hibernate.validator" level="ERROR"/>
    <logger name="org.thymeleaf" level="ERROR"/>
    <logger name="org.springframework.context.annotation" level="ERROR"/>


    <!--<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">-->
    <!--<resetJUL>true</resetJUL>-->
    <!--</contextListener>-->
    <!--root節點是必選節點,用來指定最基礎的日志輸出級別,只有一個level屬性。-->
   <!-- level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設置為INHERITED或者同義詞NULL。
    默認是DEBUG。
    可以包含零個或多個元素,標識這個appender將會添加到這個logger。-->

   <!-- springProfile多環境日志輸出,據不同環境(prod:生產環境,test:測試環境,dev:開發環境)來定義不同的日志輸出-->
    <springProfile name="prod">
        <root level="DEBUG">
            <!--<appender-ref ref="FILEERROR"/>-->
            <!--<appender-ref ref="FILEWARN"/>-->
            <!--<appender-ref ref="FILEINFO"/>-->
            <!--<appender-ref ref="DBAPPENDER"/>-->
            <appender-ref ref="STDOUT"/>

        </root>
    </springProfile>


    <springProfile name="dev,test">
        <root level="INFO">
            <!--<appender-ref ref="FILEERROR"/>-->
            <!--<appender-ref ref="FILEWARN"/>-->
            <appender-ref ref="FILEINFO"/>
            <!--<appender-ref ref="DBAPPENDER"/>-->
            <!--<appender-ref ref="CONSOLE"/>-->

        </root>
    </springProfile>

   <!-- 可以啟動服務的時候指定 profile (如不指定使用默認),如指定prod 的方式為:
    java -jar xxx.jar –spring.profiles.active=prod-->

</configuration>

 

 

參考源:https://www.cnblogs.com/xm-02/p/9109563.html


免責聲明!

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



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