国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何在 Spring Boot 中集成日志框架 SLF4J、Log4j

這篇具有很好參考價值的文章主要介紹了如何在 Spring Boot 中集成日志框架 SLF4J、Log4j。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

筆者的操作環(huán)境:

  • Spring Cloud Alibaba:2022.0.0.0-RC2

  • Spring Cloud:2022.0.0

  • Spring Boot:3.0.2

  • Nacos 2.2.3

  • Maven 3.8.3

  • JDK 17.0.7

  • IntelliJ IDEA 2022.3.1 (Ultimate Edition)

具體步驟

  1. 因為 Spring Boot 已經(jīng)內(nèi)置了 Logback,所以需要先將 Logback 移除。移除的方法是在 Spring Boot 依賴包中移除 Logback。

    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
    

    比如就像這樣:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    【踩坑提醒】

    ??如何使用了 Maven 多模塊,必須在所有依賴 Logback 的依賴包中將 Logback 排除,否則 Spring Boot 啟動時會發(fā)生如下報錯:

    SLF4J: Class path contains multiple SLF4J providers.
    SLF4J: Found provider [ch.qos.logback.classic.spi.LogbackServiceProvider@4f51b3e0]
    SLF4J: Found provider [org.apache.logging.slf4j.SLF4JServiceProvider@4b9e255]
    SLF4J: See https://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual provider is of type [ch.qos.logback.classic.spi.LogbackServiceProvider@4f51b3e0]
    

    ??比如,下面這兩個 Spring Boot 依賴包中都依賴了 Logback,所以都要排除 Logback。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    ??如果想確定自己的 Maven 模塊有沒有依賴 Logback,可以在 IntelliJ IDEA 中查看。

    如何在 Spring Boot 中集成日志框架 SLF4J、Log4j,方法/其它教程,Java,SLF4J,Log4j2,Spring Boot,Lombok,日志

    ??比方說,下面這種情況就屬于同時依賴了 Logback、Log4j2,這樣 Spring Boot 就會在啟動時報錯。

    如何在 Spring Boot 中集成日志框架 SLF4J、Log4j,方法/其它教程,Java,SLF4J,Log4j2,Spring Boot,Lombok,日志


  2. 引入與 Spring Boot 適配的 Log4j2 依賴包。

    <!-- 設置 SLF4J 與之綁定的日志包。無需提供 SLF4J 的 JAR 包,因為 Lombok 已經(jīng)提供了 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
        <version>Spring Boot 的版本</version>
    </dependency>
    

    此依賴包的版本與 Spring Boot 是一致的。如果不清楚應該使用什么版本,可以去 Maven 倉庫中查詢。Maven 倉庫官網(wǎng):https://mvnrepository.com/


    【提示】

    ??對于不使用 Spring Boot 的項目,使用的是如下經(jīng)典 Log4j2 依賴配置。使用 Spring Boot 之后,此依賴配置是多余的。

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>Log4j2 的版本</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>Log4j2 的版本</version>
    </dependency>
    <!-- 設置 SLF4J 與之綁定的日志包。無需提供 SLF4J 的 JAR 包,因為 Lombok 已經(jīng)提供了 -->
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>Log4j2 的版本</version>
    </dependency>
    

    ??讀者可以自行檢查,Spring Boot 適配的 Log4j2 依賴包已經(jīng)包含了上述經(jīng)典 Log4j2 依賴配置。

    如何在 Spring Boot 中集成日志框架 SLF4J、Log4j,方法/其它教程,Java,SLF4J,Log4j2,Spring Boot,Lombok,日志


  3. 提供 Log4j2 的日志配置文件。

    如果不提供此配置,則 Spring Boot 會提供一個默認配置。通常,默認配置也不是很糟糕,但它有一個嚴重的問題,它不會將日志輸出至文件來備份。因此,不能使用默認配置。

    一個示例的 Log4j2 的日志配置如下,讀者可以自行變更為自己喜歡的配置。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration status="OFF">
        <Properties>
            <property name="console_log_pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%t] %l %n %m%n</property>
            <property name="file_log_pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%t] %C.%M[%L line] %n %m%n</property>
            <property name="every_file_size">20MB</property>
        </Properties>
    
        <appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="${console_log_pattern}"/>
            </Console>
    
            <RollingFile name="DEBUG" fileName="./log/log4j2/debug.log"
                         filePattern="./log/log4j2/debug_log_archive/debug-%d{yyyy-MM-dd}-%i.log.zip">
                <PatternLayout pattern="${file_log_pattern}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="${every_file_size}"/>
                </Policies>
                <Filters>
                    <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
                </Filters>
            </RollingFile>
    
            <RollingFile name="INFO" fileName="./log/log4j2/info.log"
                         filePattern="./log/log4j2/info_log_archive/info-%d{yyyy-MM-dd}-%i.log.zip">
                <PatternLayout pattern="${file_log_pattern}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="${every_file_size}"/>
                </Policies>
                <Filters>
                    <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
                </Filters>
            </RollingFile>
    
            <RollingFile name="WARN" fileName="./log/log4j2/warn.log"
                         filePattern="./log/log4j2/warn_log_archive/warn-%d{yyyy-MM-dd}-%i.log.zip">
                <PatternLayout pattern="${file_log_pattern}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="${every_file_size}"/>
                </Policies>
                <Filters>
                    <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
                </Filters>
            </RollingFile>
    
            <RollingFile name="ERROR" fileName="./log/log4j2/error.log"
                         filePattern="./log/log4j2/error_log_archive/error-%d{yyyy-MM-dd}-%i.log.zip">
                <PatternLayout pattern="${file_log_pattern}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="${every_file_size}"/>
                </Policies>
                <Filters>
                    <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
                </Filters>
            </RollingFile>
    
        </appenders>
    
        <loggers>
            <!-- 屬性 level 是用于設置最低需要輸出的日志輸出級別 -->
            <root level="DEBUG">
                <appender-ref ref="Console"/>
                <appender-ref ref="DEBUG"/>
                <appender-ref ref="INFO"/>
                <appender-ref ref="WARN"/>
                <appender-ref ref="ERROR"/>
            </root>
        </loggers>
    </configuration>
    
  4. Log4j2 的日志配置文件編寫完成之后,可以放在 Maven 模塊的 resource 目錄下,如下圖所示。

    如何在 Spring Boot 中集成日志框架 SLF4J、Log4j,方法/其它教程,Java,SLF4J,Log4j2,Spring Boot,Lombok,日志

    然后,在 Spring Boot 配置文件(如 application.yml)中使用如下代碼引入該配置。

    logging:
      config: classpath:log4j2.xml
    

    如果 Log4j2 的日志配置文件名為 log4j2.xmllog4j2-spring.xml,且放在 resource 目錄下,那就算是不在 Spring Boot 配置文件中引入此 Log4j2 的日志配置,Spring Boot 也會自動讀取該 Log4j2 的日志配置。不過,最好還是顯式地引入此配置。


    【注意】

    ??如果使用了 Maven 多模塊,則此 Log4j2 的日志配置文件和 Spring Boot 配置文件只能放在 Spring Boot 入口模塊中。不要在一種沒有程序啟動入口的 Maven 庫模塊中放置此配置文件。


  5. 前面已經(jīng)導入了 Log4j2,現(xiàn)在來考慮 SLF4J。

    SLF4J 是一種門面日志,它只要發(fā)現(xiàn)導入了 Log4j2,它就會自動使用它。

    幸運的是,有一個眾所周知的插件叫 Lombok,它已經(jīng)內(nèi)置了 SLF4J。因此只要使用 Lombok,就可以不需要引入 SLF4J 依賴。

  6. 引入 Lombok 的依賴代碼如下。

    <!-- 注意:Lombok 不會在依賴中被繼承 -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>Lombok 的版本</version>
        <scope>provided</scope>
    </dependency>
    
  7. 然后,在需要使用 SLF4J 的類上使用注解 @Slf4j。這樣就可以直接在代碼中使用 log.xxx(...) 來使用 Log4j2 日志了。

    @Slf4j
    public class UserAvatarController {
        // ...省略其它內(nèi)容...
        public void fun(HttpServletRequest request, HttpServletResponse response) {
            log.info("fun called");
        }
    }
    

附錄

  • Log4j2

    • Log4j2 的開源地址:https://github.com/apache/logging-log4j2

    • Log4j2 官方文檔:https://logging.apache.org/log4j/2.x/manual/index.html

  • SLF4J

    • SLF4J 官網(wǎng):https://www.slf4j.org/

    • SLF4J 官方文檔:https://www.slf4j.org/docs.html文章來源地址http://www.zghlxwxcb.cn/news/detail-635898.html

到了這里,關于如何在 Spring Boot 中集成日志框架 SLF4J、Log4j的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • SLF4J門面日志框架源碼探索

    SLF4J門面日志框架源碼探索

    SLF4J即Simple Logging Facade for Java,它提供了Java中所有日志框架的簡單外觀或抽象。因此,它使用戶能夠使用單個依賴項處理任何日志框架,例如:Log4j,Logback和JUL(java.util.logging)。通過在類路徑中插入適當?shù)?jar 文件(綁定),可以在部署時插入所需的日志框架。如果要更換日志

    2024年02月09日
    瀏覽(24)
  • SLF4J日志框架在項目中使用

    SLF4J全稱“Simple Logging Facade for Java”,作為各種日志框架的簡單門面。例如: java.util.logging、logback 、 reload4j等。只需要切換日志框架的jar包依賴就可以切換日志框架。 SLF4J支持的日志框架包含如下: log4j:常用的日志框架,需要有配置文件log4j.properties logback:可以通過logba

    2024年02月02日
    瀏覽(25)
  • SLF4J門面日志框架源碼探索 | 京東云技術團隊

    SLF4J門面日志框架源碼探索 | 京東云技術團隊

    SLF4J即Simple Logging Facade for Java,它提供了Java中所有日志框架的簡單外觀或抽象。因此,它使用戶能夠使用單個依賴項處理任何日志框架,例如:Log4j,Logback和JUL(java.util.logging)。通過在類路徑中插入適當?shù)?jar 文件(綁定),可以在部署時插入所需的日志框架。如果要更換日志

    2024年02月11日
    瀏覽(19)
  • 微服務學習系列15:日志框架slf4j使用和原理

    微服務學習系列15:日志框架slf4j使用和原理

    目錄 ? 前言 一、slf4j 項目Github地址: slfj4j橋接API slf4j 項目模塊描述 二、slf4j-api 簡單使用 代碼分析? 三、基礎知識 外觀模式 適配器模式 什么是橋接模式 什么是SPI 什么是API 四、設計分析 參考 slf4j主要是為了給Java日志訪問提供一個標準、規(guī)范的API框架,其主要意義在于提

    2024年02月07日
    瀏覽(26)
  • 【SpringBoot中使用SLE4J日志框架啟動報錯:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinde】

    【SpringBoot中使用SLE4J日志框架啟動報錯:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinde】

    1.1 出現(xiàn)的問題 SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 1.2 原因分析 檢查自己的maven依賴,發(fā)現(xiàn)已經(jīng)引入了slf4j-api了,這是為什么呢?其原因是,SLF4J本身

    2024年02月13日
    瀏覽(21)
  • SpringBoot集成slf4j日志系統(tǒng)

    SpringBoot集成slf4j日志系統(tǒng)

    作者平臺: | CSDN:blog.csdn.net/qq_4115394… | 掘金:juejin.cn/user/651387… | 知乎:www.zhihu.com/people/1024… | GitHub:github.com/JiangXia-10… | 微信公眾號:1024筆記 本文大約4777字,預計閱讀時長11分鐘 日志系統(tǒng)作為一個應用系統(tǒng)的重要部分之一,它能夠有助于我們在系統(tǒng)在線上環(huán)境中如果

    2023年04月19日
    瀏覽(18)
  • 日志框架梳理(Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2)

    文中代碼示例獲取:關注【 Qin的學習營地 】,回復【 日志框架梳理 】 在了解日志框架時總會列出一系列框架:Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2,這么多框架讓人感到混亂,該怎么選取、該怎么用。接下來,讓我們逐步理清這些框架及之間的關系。 首先來了解日志

    2024年02月05日
    瀏覽(61)
  • 6.2 SpringBoot日志入門實戰(zhàn) SLF4J + Logback

    6.2 SpringBoot日志入門實戰(zhàn) SLF4J + Logback

    如果你是一位Java開發(fā)者,那么你肯定知道Log日志的重要性,它是我們了解程序內(nèi)部運行真像,分析和定位問題的最直接手段!對于任何企業(yè)級的程序,日志記錄是必須的! 在SpringBoot框架中,集成了常用的日志框架,包括SLF4J、Logback、Log4j2、Java Util Logging等,其中,Logback是

    2024年02月08日
    瀏覽(26)
  • 【JavaEE進階】 關于?志框架(SLF4J)

    【JavaEE進階】 關于?志框架(SLF4J)

    SLF4J不同于其他?志框架,它不是?個真正的?志實現(xiàn),?是?個抽象層,對?志框架制定的?種規(guī)范、標準、接?.所有SLF4J并不能獨?使?,需要和具體的?志框架配合使? SLF4J是??模式的典型應?(但不僅僅使?了??模式). ??模式(Facade Pattern)?稱為外觀模式,提供了?個

    2024年01月22日
    瀏覽(48)
  • 學習SpringBoot使用slf4j日志并輸出到文件中

    學習SpringBoot使用slf4j日志并輸出到文件中

    再使用前,先了解一下介紹,否則你也不會用! 1、日志級別 SLF4J將日志分為trace、debug、info、warn、error五個級別,每個級別對應記錄不同的日志,對應不同的使用場景。 日志級別從低到高分為 TRACE DEBUG INFO WARN ERROR FATAL 如果設置為 WARN ,則低于 WARN 的信息都不會輸出 一般設

    2024年02月06日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包