使用logback來輸出日誌

日誌級別——level

  • debug:調試,從名字能夠看出其做用。程序中報錯沒法解決時,使用調試來查看更多錯誤信息。在mybatis中使用這種日誌纔會輸出sql語句。debug的輸出量太大,並且不懂源碼的人不少都看不懂,還有不少沒什麼實際做用的日誌信息刷屏,只適合報異常程序的調試。
  • info:信息,信息量比debug少不少,只會輸出一些重要的信息,適合開發時使用。
  • warn:警告,一般是能夠修復的,不修復也不必定會引起異常,有時候是一些提示信息,可是比info信息更加劇要
  • error:錯誤,很明顯,就是程序異常

logback讀取配置文件

logback在初始化時,按照如下順序來讀取配置文件java

  1. 若是java程序啓動時指定了logback.configurationFile屬性,就用該屬性指定的配置文件。如java -Dlogback.configurationFile=/path/to/mylogback.xml Test ,這樣執行Test類的時候就會加載/path/to/mylogback.xml配置。
  2. 在classpath中查找 logback-test.xml 文件。
  3. 在classpath中查找 logback.groovy 文件。
  4. 在classpath中查找 logback.xml 文件。

logback.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

    <!--定義變量,能夠經過${name}使用-->
    <property name="path" value="log" />

    <!--ConsoleAppender 用於配置日誌的輸出,ConsoleAppender是控制檯-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 配置日誌格式,這是一個比較通用的格式 -->
            <pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>

    <!-- 輸出終端是滾動文件 -->
    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 基於時間滾動,就是天天的日誌輸出到不一樣的文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 輸出日誌的目錄文件名,window中默認分區爲當前程序的硬盤分區,%d{yyyy-MM-dd}是當前日期 -->
            <fileNamePattern>${path}/info/info-%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 最大保存2個文件,超出的歷史文件會被刪除 -->
            <maxHistory>2</maxHistory>
        </rollingPolicy>

        <!-- 按照日誌級別進行過濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 只收集WARN級別的日誌,其餘高級別和低級別的日誌都放棄 -->
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

        <encoder>
            <!-- 配置日誌格式,這是一個比較通用的格式 -->
            <pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>

    <!-- 輸出終端是滾動文件 -->
    <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 基於時間滾動,就是天天的日誌輸出到不一樣的文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 輸出日誌的目錄文件名,window中默認分區爲當前程序的硬盤分區,%d{yyyy-MM-dd}是當前日期 -->
            <fileNamePattern>${path}/warn/warn-%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 最大保存2個文件,超出的歷史文件會被刪除 -->
            <maxHistory>2</maxHistory>
        </rollingPolicy>

        <!-- 按照日誌級別進行過濾 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 只收集WARN級別的日誌,其餘高級別和低級別的日誌都放棄 -->
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>

        <encoder>
            <!-- 配置日誌格式,這是一個比較通用的格式 -->
            <pattern>%d{HH:mm:ss.SSS} %-5level %logger{35} - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="INFO" />
        <appender-ref ref="WARN" />
    </root>
</configuration>
相關文章
相關標籤/搜索