2021-08-09

Logback框架

步驟一:

引入使用logback需要的3個依賴,需要注意使用logback是需要引入slf4j-api的,因為logback是基于slf4j的。

<!--logback-->

<dependency>

  <groupId>ch.qos.logback</groupId>

  <artifactId>logback-core</artifactId>

  <version>1.2.3</version>

</dependency>

<dependency>

  <groupId>ch.qos.logback</groupId>

  <artifactId>logback-classic</artifactId>

  <version>1.2.3</version>

</dependency>

<dependency>

  <groupId>org.slf4j</groupId>

  <artifactId>slf4j-api</artifactId>

  <version>1.7.25</version>

</dependency>

步驟二:

在classpath(或者config)下創(chuàng)建logback.xml文件,并按需要進行相應的配置

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

<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <!-- 【日志級別】trace<debug<info<warn<error 若定義的日志級別為info,則不會打印出 trace和debug的相關日志。-->

    <!-- 定義全局參數常量 -->

    <property name="log.level" value="debug"/>

    <property name="log.maxHistory" value="30"/><!-- 30表示30個 -->

    <!-- 日志的存放位置 -->                    <!--catalina.base表示tomcat的根路徑  -->

    <property name="log.filePath" value="${catalina.base}/logs/webapps"/>

    <!-- 日志的展現(xiàn)格式 -->

    <property name="log.pattern" value="%d{yyyy-MM-dd : HH:mm:ss.SSS}[%thread]%-5level%logger{50}-%msg%n"/>

    <!-- 定義appender (日志的輸出和存放位置等). -->

    <!-- 控制臺設置 -->

    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>${log.pattern}</pattern>  <!-- 控制臺日志輸出格式 -->

        </encoder>

    </appender>

    <!-- DEBUG -->

    <appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件會滾動 -->

        <!-- 文件路徑 -->

        <file>${log.filePath}/debug.log</file><!-- 當前的日志文件存放路徑 -->

        <!-- 日志滾動策略 -->

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!-- 歷史日志文件的存放路徑和名稱 -->

            <fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz</fileNamePattern>

            <!-- 日志文件最大的保存歷史 數量-->

            <maxHistory>${log.maxHistory}</maxHistory>

        </rollingPolicy>

        <encoder>

            <pattern>${log.pattern}</pattern>  <!-- 日志文件中日志的格式 -->

        </encoder>

        <filter class="ch.qos.logback.classic.filter.LevelFilter">

            <level>DEBUG</level>

            <onMatch>ACCEPT</onMatch>  <!-- 用過濾器,只接受DEBUG級別的日志信息,其余全部過濾掉 -->

            <onMismatch>DENY</onMismatch>

        </filter>

    </appender>

    <!-- INFO -->

    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件會滾動 -->

        <!-- 文件路徑 -->

        <file>${log.filePath}/info.log</file><!-- 當前的日志文件存放路徑 -->

        <!-- 日志滾動策略 -->

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

            <!-- 歷史日志文件的存放路徑和名稱 -->

            <fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz</fileNamePattern>

            <!-- 日志文件最大的保存歷史 數量-->

            <maxHistory>${log.maxHistory}</maxHistory>

        </rollingPolicy>

        <encoder>

            <pattern>${log.pattern}</pattern>  <!-- 日志文件中日志的格式 -->

        </encoder>

        <filter class="ch.qos.logback.classic.filter.LevelFilter">

            <level>INFO</level>

            <onMatch>ACCEPT</onMatch>  <!-- 用過濾器,只接受INFO級別的日志信息,其余全部過濾掉 -->

            <onMismatch>DENY</onMismatch>

        </filter>

    </appender>

    <!-- ERROR-->

    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件會滾動 -->

        <!-- 文件路徑 -->

        <file>${log.filePath}/error.log</file><!-- 當前的日志文件存放路徑 -->

        <!-- 日志滾動策略 -->

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- TimeBased默認是一天更新一次 -->

            <!-- 歷史日志文件的存放路徑和名稱 -->

            <fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz</fileNamePattern>

            <!-- 日志文件最大的保存歷史 數量-->

            <maxHistory>${log.maxHistory}</maxHistory>

        </rollingPolicy>

        <encoder>

            <pattern>${log.pattern}</pattern>  <!-- 日志文件中日志的格式 -->

        </encoder>

        <filter class="ch.qos.logback.classic.filter.LevelFilter">

            <level>ERROR</level>

            <onMatch>ACCEPT</onMatch>  <!-- 用過濾器,只接受ERROR級別的日志信息,其余全部過濾掉 -->

            <onMismatch>DENY</onMismatch>

        </filter>

    </appender>

    <!-- logger標簽用于和appender進行綁定,并告訴logback哪些包(name屬性)的日志信息需要記錄 -->

    <!--logger將會繼承root標簽,在加上additivity="true"的屬性后 root標簽中的level將會被logger的level覆蓋-->

    <logger name="com.me" level="${log.level}" additivity="true">

        <!-- level表示只記錄哪一個級別以上的日志 -->

        <!-- 與appender進行綁定 -->

        <appender-ref ref="debugAppender"/>

        <appender-ref ref="infoAppender"/>

        <appender-ref ref="errorAppender"/>

    </logger>

    <root level="info">

        <appender-ref ref="consoleAppender"/>

    </root>

</configuration>

注意:若日志路徑可配置則如下操作

<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <property name="appName" value="XXX" />
    <property name="module_all" value="all" />
    <property name="info" value="info" />
    <property file="application.properties"/>

    <springProperty scope="context" name="LOG_HOME" source="logback.loghome"/>
    <!-- 標準控制臺輸出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d [%thread] %logger{36} %5level >%msg%n</pattern>
        </encoder>ExecutorService
    </appender>
    <!-- INFO -->
    <appender name="AllMsgFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${appName}.${module_all}.%d{yyyyMMdd}.info.%i.log</fileNamePattern>
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容