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

記錄一次@Slf4j log.info 日志信息未輸出到日志文件的問題

這篇具有很好參考價值的文章主要介紹了記錄一次@Slf4j log.info 日志信息未輸出到日志文件的問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Spring Boot的起步依賴(如spring-boot-starter-web)中已經(jīng)包含了Slf4j的依賴,無需額外添加。:

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

當你在項目中添加了spring-boot-starter-web依賴后,它將自動引入以下關(guān)鍵組件和依賴項:

  • Spring MVC:用于構(gòu)建Web應(yīng)用程序的模型-視圖-控制器(Model-View-Controller)框架。
  • Tomcat(或其他嵌入式Web服務(wù)器):用于運行和部署Web應(yīng)用程序。
  • Spring Web:提供Web開發(fā)所需的核心功能,如請求處理、過濾器、異常處理等。
  • Jackson(或其他JSON處理庫):用于處理JSON數(shù)據(jù)的序列化和反序列化。
  • 其他輔助依賴項:包括Servlet API、Spring Boot自動配置等。

通過添加spring-boot-starter-web依賴,你可以方便地構(gòu)建和開發(fā)基于Spring Boot的Web應(yīng)用程序。它提供了必要的組件和配置,使你能夠處理HTTP請求、定義控制器、處理表單提交、返回JSON或HTML響應(yīng)等。

spring-boot-starter-web依賴中已經(jīng)集成了日志框架。在Spring Boot中,默認使用的是SLF4J(Simple Logging Facade for Java)作為日志抽象層,并且使用Logback作為默認的日志實現(xiàn)。

SLF4J是一個日志抽象層,它提供了統(tǒng)一的日志接口,可以與多個具體的日志實現(xiàn)框架進行集成。而Logback是SLF4J的一個實現(xiàn),它提供了強大的日志功能和靈活的配置選項。

當你添加了spring-boot-starter-web依賴后,它會自動引入spring-boot-starter-logging依賴,該依賴會將SLF4J和Logback集成到你的項目中。這意味著你可以直接在代碼中使用SLF4J的API進行日志記錄,而無需額外的配置。

在項目中添加 logback-spring.xml 文件,如下所示:

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

<!-- 日志級別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設(shè)置為WARN,則低于WARN的信息都不會輸出 -->
<!-- scan:當此屬性設(shè)置為true時,配置文檔如果發(fā)生改變,將會被重新加載,默認值為true -->
<!-- scanPeriod:設(shè)置監(jiān)測配置文檔是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。
                 當scan為true時,此屬性生效。默認的時間間隔為1分鐘。 -->
<!-- debug:當此屬性設(shè)置為true時,將打印出logback內(nèi)部日志信息,實時查看logback運行狀態(tài)。默認值為false。 -->
<configuration  scan="true" scanPeriod="10 seconds">
    <contextName>logback</contextName>

    <!-- name的值是變量的名稱,value的值時變量定義的值。通過定義的值會被插入到logger上下文中。定義后,可以使“${}”來使用變量。 -->
    <property name="log.path" value="logs" />


    <!--0. 日志格式和顏色渲染 -->
    <!-- 彩色日志依賴的渲染類 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <!--1. 輸出到控制臺-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--此日志appender是為開發(fā)使用,只配置最底級別,控制臺輸出的日志級別是大于或等于此級別的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 設(shè)置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!--2. 輸出到文檔-->
    <!-- 2.1 level為 DEBUG 日志,時間滾動輸出  -->
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文檔的路徑及文檔名 -->
        <file>${log.path}/web_debug.log</file>
        <!--日志文檔輸出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 設(shè)置字符集 -->
        </encoder>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志歸檔 -->
            <fileNamePattern>${log.path}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文檔保留天數(shù)-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <!-- 此日志文檔只記錄debug級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!-- 2.2 level為 INFO 日志,時間滾動輸出  -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文檔的路徑及文檔名 -->
        <file>${log.path}/web_info.log</file>
        <!--日志文檔輸出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 每天日志歸檔路徑以及格式 -->
            <fileNamePattern>${log.path}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文檔保留天數(shù)-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文檔只記錄info級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!-- 2.3 level為 WARN 日志,時間滾動輸出  -->
    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文檔的路徑及文檔名 -->
        <file>${log.path}/web_warn.log</file>
        <!--日志文檔輸出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
        </encoder>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文檔保留天數(shù)-->
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        <!-- 此日志文檔只記錄warn級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>



    <!-- 2.4 level為 ERROR 日志,時間滾動輸出  -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文檔的路徑及文檔名 -->
        <file>${log.path}/web_error.log</file>
        <!--日志文檔輸出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 -->
        </encoder>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文檔保留天數(shù)-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <!-- 此日志文檔只記錄ERROR級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>



    <!--
        <logger>用來設(shè)置某一個包或者具體的某一個類的日志打印級別、
        以及指定<appender>。<logger>僅有一個name屬性,
        一個可選的level和一個可選的addtivity屬性。
        name:用來指定受此logger約束的某一個包或者具體的某一個類。
        level:用來設(shè)置打印級別,大小寫無關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
              還有一個特俗值INHERITED或者同義詞NULL,代表強制執(zhí)行上級的級別。
              如果未設(shè)置此屬性,那么當前l(fā)ogger將會繼承上級的級別。
        addtivity:是否向上級logger傳遞打印信息。默認是true。
        <logger name="org.springframework.web" level="info"/>
        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
    -->

    <!--
        使用mybatis的時候,sql語句是debug下才會打印,而這里我們只配置了info,所以想要查看sql語句的話,有以下兩種操作:
        第一種把<root level="info">改成<root level="DEBUG">這樣就會打印sql,不過這樣日志那邊會出現(xiàn)很多其他消息
        第二種就是單獨給dao下目錄配置debug模式,代碼如下,這樣配置sql語句會打印,其他還是正常info級別:
        【logging.level.org.mybatis=debug logging.level.dao=debug】
     -->

    <!--
        root節(jié)點是必選節(jié)點,用來指定最基礎(chǔ)的日志輸出級別,只有一個level屬性
        level:用來設(shè)置打印級別,大小寫無關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
        不能設(shè)置為INHERITED或者同義詞NULL。默認是DEBUG
        可以包含零個或多個元素,標識這個appender將會添加到這個logger。
    -->
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <!--<logger name="org.springframework.web" level="INFO"/>
    <logger name="org.springboot.sample" level="TRACE" />-->

    <!-- 開發(fā)、測試環(huán)境 -->
    <springProfile name="dev,test">
<!--        <logger name="org.springframework.web" level="INFO"/>-->
<!--        <logger name="org.springboot.sample" level="INFO" />-->
        <logger name="biz" level="INFO" />

        <root level="INFO">
             <appender-ref ref="CONSOLE" />
             <appender-ref ref="DEBUG_FILE" />
             <appender-ref ref="INFO_FILE" />
             <appender-ref ref="ERROR_FILE" />
             <appender-ref ref="WARN_FILE" />
        </root>
    </springProfile>

    <!-- 生產(chǎn)環(huán)境 -->
    <springProfile name="prod">
        <logger name="org.springframework.web" level="ERROR"/>
        <logger name="org.springboot.sample" level="ERROR" />
        <logger name="biz" level="ERROR" />
        <root level="error">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="DEBUG_FILE" />
            <appender-ref ref="INFO_FILE" />
            <appender-ref ref="ERROR_FILE" />
            <appender-ref ref="WARN_FILE" />
        </root>
    </springProfile>

</configuration>

在業(yè)務(wù)代碼中對需要加日志的類添加注解? @Slf4j

在具體需要加日志的地方,按需使用如下語句,等級依次是從低到高

//日志等級為 debug
log.debug("我的測試接口,參數(shù)為: {}",params);

//日志等級為 info
log.info("我的測試接口,參數(shù)為: {}",params);

//日志等級為warn
log.warn("我的測試接口,參數(shù)為: {}",params);

//日志等級為error
log.error("我的測試接口,參數(shù)為: {}",params);

配置文件不論是使用 bootstrap.yml 還是application.yml,均需要指定環(huán)境,需和?logback-spring.xml 中?springProfile 配置的name匹配,會選擇指定的日志等級

    <springProfile name="dev,test">
       ...

    </springProfile>
spring:
  profiles:
    active: dev

在Spring Cloud項目中,bootstrap.yml的優(yōu)先級比application.yml更高。

bootstrap.yml是在Spring應(yīng)用程序啟動的早期加載的配置文件,它用于進行系統(tǒng)級別的配置,例如連接到配置服務(wù)器、配置加密等。它在應(yīng)用程序上下文被創(chuàng)建之前加載,因此可以在應(yīng)用程序的早期階段使用它來配置一些必要的屬性。

相比之下,application.yml是應(yīng)用程序級別的配置文件,用于配置應(yīng)用程序的具體行為和屬性。

由于bootstrap.yml在應(yīng)用程序上下文創(chuàng)建之前加載,它的配置會覆蓋application.yml中相同屬性的配置。這使得bootstrap.yml可以用于設(shè)置一些全局的配置,而application.yml則用于設(shè)置應(yīng)用程序特定的配置。

因此,如果bootstrap.ymlapplication.yml中存在相同的屬性配置,bootstrap.yml中的配置將覆蓋application.yml中的配置。這樣可以確保系統(tǒng)級別的配置優(yōu)先于應(yīng)用程序級別的配置。

故如果在?bootstrap.yml 中指定了環(huán)境,但是沒找到配置文件,然后加載了application.yml 配置文件內(nèi)容,環(huán)境會以?bootstrap.yml 為準。如果環(huán)境和?springProfile 不匹配會出現(xiàn)日志無法輸出到日志文件的情況。文章來源地址http://www.zghlxwxcb.cn/news/detail-739630.html

到了這里,關(guān)于記錄一次@Slf4j log.info 日志信息未輸出到日志文件的問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 使用@Slf4j后引入log,idea標紅

    使用@Slf4j后引入log,idea標紅

    引入@Slf4j注解 idea標紅Cannot resolve symbol ‘log’ 引入Lombok插件 如果在Marketplace查不到時,不妨關(guān)閉菜單再打開試下

    2024年01月18日
    瀏覽(24)
  • SLF4J門面日志框架源碼探索

    SLF4J門面日志框架源碼探索

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

    2024年02月09日
    瀏覽(24)
  • 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字,預(yù)計閱讀時長11分鐘 日志系統(tǒng)作為一個應(yīng)用系統(tǒng)的重要部分之一,它能夠有助于我們在系統(tǒng)在線上環(huán)境中如果

    2023年04月19日
    瀏覽(18)
  • java 項目配置slf4j - log4j2

    2024年02月13日
    瀏覽(24)
  • SLF4J & Spring Boot日志框架

    SLF4J & Spring Boot日志框架

    JAVA有好多優(yōu)秀的日志框架,比如log4j、log4j2、logback、JUL(java.util.logging)、JCL(JAVA Common Logging)等等,logback是后起之秀,是Spring Boot默認日志框架。 今天文章的目標不是研究JAVA的這些日志框架,而是在應(yīng)用中處于他們前面的日志門面SLF4J,以及初步了解一下Spring Boot的默認日

    2024年01月17日
    瀏覽(21)
  • SLF4J日志框架在項目中使用

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

    2024年02月02日
    瀏覽(25)
  • Spring Boot 日志配置(Slf4j)

    Spring Boot 日志配置(Slf4j)

    SLF4J與Logback簡介 Java日志框架眾多,常用的有java.util.logging, log4j, logback,commons-logging等。 SLF4J (Simple Logging Facade For Java),它是一個針對于各類Java日志框架的統(tǒng)一Facade抽象。SLF4J定義了統(tǒng)一的日志抽象接口,而真正的日志實現(xiàn)則是在運行時決定。 LogBack是由log4j的創(chuàng)始人開發(fā)的新

    2024年02月16日
    瀏覽(26)
  • @Slf4j 變量log找不到符號,附上網(wǎng)上一般處理流程

    @Slf4j 變量log找不到符號,附上網(wǎng)上一般處理流程

    編譯時,總是報:找不到符合,符號:變量 log??墒俏野凑掌渌椖棵髅魇强梢哉>幾g的,至少可以說明IDEA的配置,相關(guān)插件都是沒問題的 ? ?一般問題處理: 問題1、缺失插件 打開File——settings——Plugins 在其中搜索Lombok并進行安裝 ? 問題2、編譯時沒有編譯注解 打開

    2024年02月16日
    瀏覽(22)
  • Spring Boot日志:SLF4J和Logback

    Spring Boot日志:SLF4J和Logback

    SpringBoot中的日志庫分為兩種: 實現(xiàn)庫:提供具體的日志實現(xiàn),例如日志級別的控制、打印格式、輸出目標等。 外觀庫:自身不提供日志實現(xiàn),而是對其他日志庫進行封裝,從而方便使用?;谕庥^模式實現(xiàn)。 關(guān)于外觀庫的出現(xiàn),可設(shè)想一下:現(xiàn)在有多種日志庫,每一種接口

    2024年02月15日
    瀏覽(76)
  • 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)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包