溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

SpringCloud怎么使用logback日志框架

發(fā)布時(shí)間:2023-05-05 10:34:15 來(lái)源:億速云 閱讀:86 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“SpringCloud怎么使用logback日志框架”,在日常操作中,相信很多人在SpringCloud怎么使用logback日志框架問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”SpringCloud怎么使用logback日志框架”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

    一.依賴(lài)引入

    如果項(xiàng)目是spring web項(xiàng)目,并且已經(jīng)引入了下面依賴(lài),可以直接使用:

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

    如果你的項(xiàng)目不是web應(yīng)用,則可以引入依賴(lài):

    <properties>
        <logback.version>1.1.11</logback.version>
    </properties>
    
    <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>
    <dependency>
    <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
    	<version>${logback.version}</version>
    </dependency>

    如果你項(xiàng)目中是spring cloud 2.x版本,則logback版本號(hào)${logback.version}可以用:

      <version>1.2.3</version>

    Spring Cloud 1.x 依賴(lài)的logback-classic版本號(hào)是:

      <version>1.1.11</version>

    二.logback-spring.xml配置

    logback-spring.xml命名要加上-spring,表明它是一個(gè)專(zhuān)門(mén)為Spring應(yīng)用準(zhǔn)備的Logback配置文件,此文件將把Spring的日志信息輸出到Logback的日志系統(tǒng)中,而且這樣才可以使用 <springProfile name="dev">這種根據(jù)不同環(huán)境切換不同日志輸出規(guī)則的配置。

    提供一個(gè)完整的配置文件,可以根據(jù)自己項(xiàng)目定制配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="false" scan="true" scanPeriod="1 seconds">
    
        <contextName>logback</contextName>
           <!--必須修改:改成你的日志文件名,下面配置表示:在項(xiàng)目啟動(dòng)目錄下,創(chuàng)建個(gè)logs文件夾,并將日志寫(xiě)入到demo.log文件中-->
        <property name="log.name" value="logs/demo"/>
    
        <!--輸出到控制臺(tái) ConsoleAppender-->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
    
      <!--必須要配置:下面配置含義,當(dāng)單個(gè)日志文件大小超過(guò)100M后,會(huì)生成新日志文件,并將舊其按日志進(jìn)行打包壓縮,當(dāng)日志總大小超過(guò)10G或者日志時(shí)間超過(guò)7天,就吧最老的日志刪除,避免日志撐爆服務(wù)器硬盤(pán)導(dǎo)致服務(wù)器宕機(jī)-->
        <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log.name}.log</file>
            <!--滾動(dòng)策略,按照時(shí)間滾動(dòng) TimeBasedRollingPolicy-->
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!--文件路徑,定義了日志的切分方式——把每一天的日志歸檔到一個(gè)文件中,以防止日志填滿(mǎn)整個(gè)磁盤(pán)空間-->
                <FileNamePattern>${log.name}.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
                <!-- 單個(gè)日志文件最多 100MB -->
                <maxFileSize>100MB</maxFileSize>
                <!--只保留最近7天的日志-->
                <maxHistory>7</maxHistory>
                <!--用來(lái)指定日志文件的上限大小,那么到了這個(gè)值,就會(huì)刪除舊的日志-->
                <totalSizeCap>10GB</totalSizeCap>
            </rollingPolicy>
            <!--日志輸出編碼格式化-->
            <encoder>
                <charset>UTF-8</charset>
                <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%n</pattern>
            </encoder>
        </appender>
    
    <!--  <root level="info">
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
        </root>-->
    
        <logger name="org.springframework" level="warn"/>
    
        <springProfile name="local">
            <!-- 打印mybatis日志 -->
            <logger name="cn.enn.smart.mapper" level="debug"/>
            <root level="info">
                <appender-ref ref="console"/>
                <!--本地環(huán)境時(shí),不寫(xiě)入日志文件 -->
            </root>
        </springProfile>
    
        <springProfile name="dev">
            <!-- 打印mybatis日志 -->
            <logger name="cn.enn.smart.mapper" level="debug"/>
            <root level="debug">
                <appender-ref ref="console"/>
                <appender-ref ref="file"/>
            </root>
        </springProfile>
    
        <springProfile name="test">
            <!-- 打印mybatis日志 -->
            <logger name="cn.enn.smart.mapper" level="debug"/>
            <root level="info">
                <appender-ref ref="console"/>
                <appender-ref ref="file"/>
            </root>
        </springProfile>
    
        <springProfile name="pro">
            <!-- 打印mybatis日志 -->
            <logger name="cn.enn.smart.mapper" level="debug"/>
            <root level="info">
                <appender-ref ref="console"/>
                <appender-ref ref="file"/>
            </root>
        </springProfile>
    
    </configuration>

    其中要修改配置的地方:

    1.日志文件名要配置,這個(gè)最好以自己項(xiàng)目名稱(chēng)命名,如:xxx.log
    2.日志保留策略要配置,上面默認(rèn)保留7天并且總?cè)罩敬笮〔荒艹^(guò)10G,否則logback會(huì)自動(dòng)刪除
    3.項(xiàng)目配置文件名稱(chēng)要配置,如果你的配置文件命名是application-local.properties、application-dev.properties、application-test.properties、application-pro.properties可使用上述配置,如果不是則需要按自己配置文件真實(shí)后綴名,修改: <springProfile name="local">、 <springProfile name="dev">、 <springProfile name="test">、 <springProfile name="pro">這四行配置。

    三.配置文件application.properties所需配置

    1.配置文件中聲明項(xiàng)目名稱(chēng):

    spring.application.name=demo

    2.可以根據(jù)不同的配置文件,決定是不是要打印Mybatis日志,配置如下:

    ①.關(guān)閉生產(chǎn)Mybatis日志

    修改application-pro.propertities文件,增加配置:

    #關(guān)閉Mybatis日志
    mybatis.configuration.log-impl=org.apache.ibatis.logging.nologging.NoLoggingImpl
    ②.打開(kāi)開(kāi)發(fā)、測(cè)試環(huán)境Mybatis日志

    application.properties中增加配置:

    #打印Mybatis日志
    mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

    四.如果想讓開(kāi)發(fā)、測(cè)試、生產(chǎn)等環(huán)境共用一套logback配置,可使用logback.xml:

    文件名可直接用logback.xml,不需要用logback-spring.xml來(lái)命名了,因?yàn)椴恍枰褂?<springProfile name="dev">這種配置來(lái)區(qū)分環(huán)境了。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="false" scan="true" scanPeriod="1 seconds">
    
        <contextName>logback</contextName>
        <property name="log.name" value="logs/demo"/>
    
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${log.name}.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <FileNamePattern>${log.name}.%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern>
                <!-- 單個(gè)日志文件最多 100MB -->
                <maxFileSize>100MB</maxFileSize>
                <!--只保留最近7天的日志-->
                <maxHistory>7</maxHistory>
                <!--用來(lái)指定日志文件的上限大小,那么到了這個(gè)值,就會(huì)刪除舊的日志-->
                <totalSizeCap>10GB</totalSizeCap>
            </rollingPolicy>
            <!--日志輸出編碼格式化-->
            <encoder>
                <charset>UTF-8</charset>
                <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%n</pattern>
            </encoder>
        </appender>
    
        <root level="info">
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
        </root>
    
    </configuration>

    五.如何高效的使用log.debug()打印日志

    log.debug()使用時(shí),最好增加判斷,防止條件不滿(mǎn)足時(shí)候,也會(huì)執(zhí)行打印日志的代碼,造成不必要的資源消耗。比如打印日志語(yǔ)句中存在對(duì)象轉(zhuǎn)字符串等操作時(shí),增加判斷后,將不再消耗系統(tǒng)資源。

    if (log.isDebugEnabled()) {
        log.debug("1.完成將文本數(shù)據(jù)導(dǎo)入到XML文件中");
    }

    到此,關(guān)于“SpringCloud怎么使用logback日志框架”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI