1. 程式人生 > >Maven項目配置logback

Maven項目配置logback

trace 配置 trigger batis 決定 移動 日誌記錄 off 控制臺輸出

首先,在pom.xml中加入maven依賴

<!-- log start -->
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${slf4j-api.version}</version>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-core</artifactId>
  <version>${logback.version}</version>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-access</artifactId>
  <version>${logback.version}</version>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>${logback.version}</version>
</dependency>
<!-- log end -->

我使用的版本是

<slf4j-api.version>1.7.25</slf4j-api.version>
<logback.version>1.1.7</logback.version>

接著,配置 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 級別從高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<!-- 日誌輸出規則 根據當前ROOT 級別,日誌輸出時,級別高於root默認的級別時 會輸出 -->
<!-- 以下 每個配置的 filter 是過濾掉輸出文件裏面,會出現高級別文件,依然出現低級別的日誌信息,通過filter 過濾只記錄本級別的日誌 -->
<!-- scan 當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true。 -->
<!-- scanPeriod 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鐘。 -->
<!-- debug 當此屬性設置為true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值為false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 子節點<property> :用來定義變量值,它有兩個屬性name和value,通過<property>定義的值會被插入到logger上下文中,可以使“${}”來使用變量。-->
    <property name="LOG_HOME" value="/export/Logs/youxi" />

    <!--子節點<appender>:負責寫日誌的組件,它有兩個必要屬性name和class。name指定appender名稱,class指定appender的全限定名-->
    <!-- ConsoleAppender 控制臺輸出日誌 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 設置日誌輸出格式 -->
            <pattern>[%d{yyyy/MM/dd HH:mm:ss.SSS}][%p][%logger{0}:%L] %m%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
           <level>INFO</level>
        </filter>
    </appender>


    <!-- RollingFileAppender:滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其他文件。有以下子節點:-->
    <!--      <file>:被寫入的文件名,可以是相對目錄,也可以是絕對目錄,如果上級目錄不存在會自動創建,沒有默認值。-->
    <!--      <append>:如果是 true,日誌被追加到文件結尾,如果是 false,清空現存文件,默認是true。-->
    <!--      <rollingPolicy>:當發生滾動時,決定RollingFileAppender的行為,涉及文件移動和重命名。屬性class定義具體的滾動策略類-->
    <!--      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy": 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動。有以下子節點:-->
    <!--        <fileNamePattern>:必要節點,包含文件名及“%d”轉換符,“%d”可以包含一個java.text.SimpleDateFormat指定的時間格式,如:%d{yyyy-MM}。-->
    <!--如果直接使用 %d,默認格式是 yyyy-MM-dd。RollingFileAppender的file字節點可有可無,通過設置file,可以為活動文件和歸檔文件指定不同位置,當前日誌總是記錄到file指定的文件(活動文件),活動文件的名字不會改變;-->
    <!--如果沒設置file,活動文件的名字會根據fileNamePattern 的值,每隔一段時間改變一次。“/”或者“\”會被當做目錄分隔符。-->
    <!--        <maxHistory>:-->
    <!--可選節點,控制保留的歸檔文件的最大數量,超出數量就刪除舊文件。假設設置每個月滾動,且<maxHistory>是6,則只保存最近6個月的文件,刪除之前的舊文件。註意,刪除舊文件是,那些為了歸檔而創建的目錄也會被刪除。-->

    <!--      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy": 查看當前活動文件的大小,如果超過指定大小會告知RollingFileAppender 觸發當前活動文件滾動。只有一個節點:-->
    <!--        <maxFileSize>:這是活動文件的大小,默認值是10MB。-->
    <!--        <prudent>:當為true時,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有兩個限制,1不支持也不允許文件壓縮,2不能設置file屬性,必須留空。-->

    <!--      <triggeringPolicy >: 告知 RollingFileAppender 合適激活滾動。-->
    <!--      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy" 根據固定窗口算法重命名文件的滾動策略。有以下子節點:-->
    <!--        <minIndex>:窗口索引最小值-->
    <!--        <maxIndex>:窗口索引最大值,當用戶指定的窗口過大時,會自動將窗口設置為12。-->
    <!--        <fileNamePattern>:必須包含“%i”例如,假設最小值和最大值分別為1和2,命名模式為 mylog%i.log,會產生歸檔文件mylog1.log和mylog2.log。還可以指定文件壓縮選項,例如,mylog%i.log.gz 或者 沒有log%i.log.zip-->
    <appender name="LogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/youxi.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/youxi.log.%d{yyyy-MM-dd}</fileNamePattern>
        </rollingPolicy>
        <!-- <encoder>:對記錄事件進行格式化。負責兩件事,一是把日誌信息轉換成字節數組,二是把字節數組寫入到輸出流。-->
        <!-- PatternLayoutEncoder 是唯一有用的且默認的encoder ,有一個<pattern>節點,用來設置日誌的輸入格式。使用“%”加“轉換符”方式,如果要輸出“%”,則必須用“\”對“\%”進行轉義。-->
        <encoder>
            <pattern>%p %d{yyyy-MM-dd HH:mm:ss} %logger - %m%n</pattern>
        </encoder>
    </appender>

    <appender name="PokerMqListenerLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/mq/poker-mq.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/mq/poker-mq.log.%d{yyyy-MM-dd}</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%p %d{yyyy-MM-dd HH:mm:ss} %logger - %m%n</pattern>
        </encoder>
    </appender>
    <logger name="com.jd.station.soa.message.listener.PokerActivityInfoMqListener" level="INFO" additivity="false">
        <appender-ref ref="PokerMqListenerLogFile"/>
    </logger>

    <logger name="jdbc.sqltiming" level="info"/>
    <logger name="com.ibatis" level="info" />
    <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="info" />
    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="info" />
    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="info" />
    <logger name="java.sql.Connection" level="info" />
    <logger name="java.sql.Statement" level="info" />
    <logger name="java.sql.PreparedStatement" level="info" />
    <logger name="java.sql.ResultSet" level="info" />

    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="LogFile" />
    </root>

</configuration>

  

詳細博客請參考

https://www.cnblogs.com/warking/p/5710303.html

Maven項目配置logback