<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Logback簡(jiǎn)介及配置文件logback.xml詳解

          共 9216字,需瀏覽 19分鐘

           ·

          2021-04-06 19:20

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

          優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

            作者 |  ergwang

          來(lái)源 |  urlify.cn/f2I7ja

          logback簡(jiǎn)介

          Logback是由log4j創(chuàng)始人設(shè)計(jì)的另一個(gè)開(kāi)源日志組件,官方網(wǎng)站:http://logback.qos.ch。

          1. logback的結(jié)構(gòu):主要由三個(gè)模塊組成:
            • logback-core // 基礎(chǔ)模塊,其他模塊基于此

            • logback-classic // 它是log4j的一個(gè)改良版本,同時(shí)它完整實(shí)現(xiàn)了slf4j API,可以更換成其它日志系統(tǒng),如log4j

            • logback-access // 訪問(wèn)模塊與Servlet容器集成提供通過(guò)Http來(lái)訪問(wèn)日志的功能

          2. 用它取代log4j的理由在于以下優(yōu)勢(shì):

            做到了更快的實(shí)現(xiàn)、非常充分的測(cè)試、很自然地實(shí)現(xiàn)了SLF4、非常詳盡的官方文檔、自動(dòng)重新加載配置文件、Lilith是log事件的觀察者,和log4j的chainsaw類似、謹(jǐn)慎的模式和非常友好的恢復(fù)(可以實(shí)現(xiàn)多個(gè)線程同時(shí)寫一個(gè)日志文件)、配置文件可以處理不同的情況、Filters(過(guò)濾器)、SiftingAppender、自動(dòng)壓縮已經(jīng)打出來(lái)的log文件、堆棧樹(shù)帶有包版本、自動(dòng)去除舊的日志文件等。

          logback.xml配置文件詳解

          1. 配置文件示例

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

            <!-- 配置文件修改時(shí)重新加載,默認(rèn)true -->
            <configuration scan="true">
                
                <!--定義日志文件的存儲(chǔ)地址 勿在 LogBack 的配置中使用相對(duì)路徑-->
                <property name="CATALINA_BASE" value="**/logs"></property>
                
                <!-- 控制臺(tái)輸出 -->
                <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
                    <encoder charset="UTF-8">
                        <!-- 輸出日志記錄格式 -->
                        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
                    </encoder>
                </appender>
             
                <!-- 第一個(gè)文件輸出,每天產(chǎn)生一個(gè)文件 -->
                <appender name="FILE1" class="ch.qos.logback.core.rolling.RollingFileAppender">
                    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <!-- 輸出文件路徑+文件名 -->
                        <fileNamePattern>${CATALINA_BASE}/aa.%d{yyyyMMdd}.log</fileNamePattern>
                        <!-- 保存30天的日志 -->
                        <maxHistory>30</maxHistory>
                    </rollingPolicy>
                    <encoder charset="UTF-8">
                        <!-- 輸出日志記錄格式 -->
                        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
                    </encoder>
                </appender>
             
                <!-- 第二個(gè)文件輸出,每天產(chǎn)生一個(gè)文件 -->
                <appender name="FILE2" class="ch.qos.logback.core.rolling.RollingFileAppender">
                    <file>${CATALINA_BASE}/bb.log</file>
                    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <fileNamePattern>${CATALINA_BASE}/bb.%d{yyyyMMdd}.log</fileNamePattern>
                        <maxHistory>30</maxHistory>
                    </rollingPolicy>
                    <encoder charset="UTF-8">
                        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
                    </encoder>
                </appender>
                
                <appender name="CUSTOM" class="ch.qos.logback.core.rolling.RollingFileAppender">
                    <file>${CATALINA_BASE}/custom.log</file>
                    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <!-- daily rollover -->
                        <fileNamePattern>${CATALINA_BASE}/custom.%d{yyyy-MM-dd}.log</fileNamePattern>
                        <!-- keep 30 days' worth of history -->
                        <maxHistory>30</maxHistory>
                    </rollingPolicy>
                    <encoder charset="UTF-8">
                        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
                    </encoder>
                </appender>
                
                <!-- 設(shè)置日志輸出級(jí)別 -->
                <root level="ERROR">
                    <appender-ref ref="CONSOLE" />
                </root>
                <logger name="file1" level="DEBUG">
                    <appender-ref ref="FILE1" />
                </logger>
                <logger name="file1" level="INFO">
                    <appender-ref ref="FILE2" />
                </logger>
                <!-- 自定義logger -->
                <logger name="custom" level="INFO">
                    <appender-ref ref="CUSTOM" />
                </logger>
            </configuration>
          2. 配置文件說(shuō)明

            一個(gè)元素

            0或多個(gè)

            0或多個(gè)

          1. logback配置文件加載說(shuō)明

            logback在啟動(dòng)時(shí):

            1. 在 classpath 中尋找 logback-test.xml文件

            2. 如果找不到 logback-test.xml,則在 classpath 中尋找 logback.groovy 文件

            3. 如果找不到 logback.groovy,則在 classpath 中尋找 logback.xml文件

            4. 如果上述的文件都找不到,則 logback 會(huì)使用 JDK 的 SPI 機(jī)制查找 META-INF/services/ch.qos.logback.classic.spi.Configurator 中的 logback 配置實(shí)現(xiàn)類,這個(gè)實(shí)現(xiàn)類必須實(shí)現(xiàn) Configuration 接口,使用它的實(shí)現(xiàn)來(lái)進(jìn)行配置

            5. 如果上述操作都不成功,logback 就會(huì)使用它自帶的 BasicConfigurator 來(lái)配置,并將日志輸出到 console

          2. 打印級(jí)別

            TRACE<DEBUG<INFO<WARN<ERROR,默認(rèn)DEBUG

          logback快速上手

          1. 依賴的jar包:

            slf4j-api

            logback-core

            logback-classic


               <dependency>
                   <groupId>org.slf4j</groupId>
                   <artifactId>slf4j-api</artifactId>
                   <version>1.7.5</version>
               </dependency>
               <dependency>
                   <groupId>ch.qos.logback</groupId>
                   <artifactId>logback-core</artifactId>
                   <version>1.0.11</version>
               </dependency>
               <dependency>
                   <groupId>ch.qos.logback</groupId>
                   <artifactId>logback-classic</artifactId>
                   <version>1.0.11</version>
               </dependency>
            【注】其中slf4j-api不是logback的一部分,是另一個(gè)項(xiàng)目,通常結(jié)合使用
          2. 代碼示例(兩種):

            // 第一種,直接聲明一個(gè)對(duì)象
            public class Slf4JLoggerTest1 {
                private static final Logger logger = LoggerFactory.getLogger(SimpleDemo.class);
                public static void main(String[] args) {
                    logger.info("Hello,tese1, this is a line of log message logged by Logback");
                }
            }


            // 第二種,在類的配置上添加@slf4j注解(**借助lombok實(shí)現(xiàn),原理同第一種**)
            @Slf4j
            public class Slf4JLoggerTest2 {
                public static void main(String[] args) {
                    log.info("Hello,tese2, this is a line of log message logged by Logback");
                }
            }

          參考資料:

          [1] logback配置詳解https://segmentfault.com/a/1190000008315137

          [2] logback的使用和logback.xml詳解https://www.cnblogs.com/warking/p/5710303.html




          粉絲福利:Java從入門到入土學(xué)習(xí)路線圖

          ??????

          ??長(zhǎng)按上方微信二維碼 2 秒


          感謝點(diǎn)贊支持下哈 


          瀏覽 59
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文字幕无码视频免费 | 婷婷五月丁香在线 | 爆肏女主播 | 亚洲国产婷婷香蕉A片 | 国产在线观看999 |