欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud使用logback日志框架教程詳解

 更新時間:2023年05月05日 09:31:24   作者:大腦補(bǔ)丁  
Logback是一個功能強(qiáng)大的日志框架,它是一個基于slf4j的日志系統(tǒng),提供了可靠的日志服務(wù),比log4j更快,更靈活,更容易使用。本文將教會你快速讓你的項目集成logback日志框架,需要的朋友可以參考下

前言

Logback是一個功能強(qiáng)大的日志框架,它是一個基于slf4j的日志系統(tǒng),提供了可靠的日志服務(wù),比log4j更快,更靈活,更容易使用。它可以定義日志消息的輸出格式,支持靈活的日志輸出,支持多種日志文件格式,支持按時間和大小分割日志等功能。本文將教會你快速讓你的項目集成logback日志框架。

一.依賴引入

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

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

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

<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>

如果你項目中是spring cloud 2.x版本,則logback版本號${logback.version}可以用:

  <version>1.2.3</version>

Spring Cloud 1.x 依賴的logback-classic版本號是:

  <version>1.1.11</version>

二.logback-spring.xml配置

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

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

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">

    <contextName>logback</contextName>
       <!--必須修改:改成你的日志文件名,下面配置表示:在項目啟動目錄下,創(chuàng)建個logs文件夾,并將日志寫入到demo.log文件中-->
    <property name="log.name" value="logs/demo"/>

    <!--輸出到控制臺 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)單個日志文件大小超過100M后,會生成新日志文件,并將舊其按日志進(jìn)行打包壓縮,當(dāng)日志總大小超過10G或者日志時間超過7天,就吧最老的日志刪除,避免日志撐爆服務(wù)器硬盤導(dǎo)致服務(wù)器宕機(jī)-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.name}.log</file>
        <!--滾動策略,按照時間滾動 TimeBasedRollingPolicy-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--文件路徑,定義了日志的切分方式——把每一天的日志歸檔到一個文件中,以防止日志填滿整個磁盤空間-->
            <FileNamePattern>${log.name}.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
            <!-- 單個日志文件最多 100MB -->
            <maxFileSize>100MB</maxFileSize>
            <!--只保留最近7天的日志-->
            <maxHistory>7</maxHistory>
            <!--用來指定日志文件的上限大小,那么到了這個值,就會刪除舊的日志-->
            <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)境時,不寫入日志文件 -->
        </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.日志文件名要配置,這個最好以自己項目名稱命名,如:xxx.log
2.日志保留策略要配置,上面默認(rèn)保留7天并且總?cè)罩敬笮〔荒艹^10G,否則logback會自動刪除
3.項目配置文件名稱要配置,如果你的配置文件命名是application-local.properties、application-dev.properties、application-test.properties、application-pro.properties可使用上述配置,如果不是則需要按自己配置文件真實后綴名,修改: <springProfile name="local">、 <springProfile name="dev">、 <springProfile name="test">、 <springProfile name="pro">這四行配置。

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

1.配置文件中聲明項目名稱:

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

②.打開開發(fā)、測試環(huán)境Mybatis日志

application.properties中增加配置:

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

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

文件名可直接用logback.xml,不需要用logback-spring.xml來命名了,因為不需要使用 <springProfile name="dev">這種配置來區(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>
            <!-- 單個日志文件最多 100MB -->
            <maxFileSize>100MB</maxFileSize>
            <!--只保留最近7天的日志-->
            <maxHistory>7</maxHistory>
            <!--用來指定日志文件的上限大小,那么到了這個值,就會刪除舊的日志-->
            <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()使用時,最好增加判斷,防止條件不滿足時候,也會執(zhí)行打印日志的代碼,造成不必要的資源消耗。比如打印日志語句中存在對象轉(zhuǎn)字符串等操作時,增加判斷后,將不再消耗系統(tǒng)資源。

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

總結(jié)

本文介紹了如何使用SpringCloud使用Logback日志框架,文章總結(jié)提供了使用Logback框架的實現(xiàn)步驟,以及可能出現(xiàn)的一些問題,以及一些常用的配置項,包括根據(jù)不同的環(huán)境配置不同日志輸出,控制日志文件大小等保留策略,以便讀者了解如何構(gòu)建可靠的微服務(wù)應(yīng)用程序。

以上就是SpringCloud使用logback日志框架教程詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringCloud logback日志框架的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用feign發(fā)送http請求解析報錯的問題

    使用feign發(fā)送http請求解析報錯的問題

    這篇文章主要介紹了使用feign發(fā)送http請求解析報錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java基礎(chǔ)MAC系統(tǒng)下IDEA連接MYSQL數(shù)據(jù)庫JDBC過程

    Java基礎(chǔ)MAC系統(tǒng)下IDEA連接MYSQL數(shù)據(jù)庫JDBC過程

    最近一直在學(xué)習(xí)web項目,當(dāng)然也會涉及與數(shù)據(jù)庫的連接這塊,這里就總結(jié)一下在IDEA中如何進(jìn)行MySQL數(shù)據(jù)庫的連接,這里提一下我的電腦是MAC系統(tǒng),使用的編碼軟件是IDEA,數(shù)據(jù)庫是MySQL
    2021-09-09
  • Java并發(fā)編程service層處理并發(fā)事務(wù)加鎖可能會無效問題

    Java并發(fā)編程service層處理并發(fā)事務(wù)加鎖可能會無效問題

    這篇文章主要介紹了Java并發(fā)編程service層處理并發(fā)事務(wù)加鎖可能會無效問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java編程中正則表達(dá)式的用法總結(jié)

    Java編程中正則表達(dá)式的用法總結(jié)

    這篇文章主要介紹了Java編程中正則表達(dá)式的用法總結(jié),正則表達(dá)式是一種強(qiáng)大的字符串處理工具,Java對正則表達(dá)式的支持還是很不錯的,我們先來整理一下正則表達(dá)式的一些基礎(chǔ)知識:
    2016-05-05
  • Java編程synchronized與lock的區(qū)別【推薦】

    Java編程synchronized與lock的區(qū)別【推薦】

    互聯(lián)網(wǎng)信息泛濫環(huán)境下少有的良心之作!如果您想對Java編程synchronized與lock的區(qū)別有所了解,這篇文章絕對值得!分享給大家,供需要的朋友參考。不說了,我先學(xué)習(xí)去了。
    2017-10-10
  • SpringMVC+Shiro的基本使用及功能介紹

    SpringMVC+Shiro的基本使用及功能介紹

    本文給大家介紹SpringMVC+Shiro的基本使用,Apache?Shiro是Java的一個安全框架,Shiro本身無法知道所持有令牌的用戶是否合法,因為除了項目的設(shè)計人員恐怕誰都無法得知,本文只介紹最常見也最重要的一種實現(xiàn)方式數(shù)據(jù)庫查詢
    2022-04-04
  • Java中final關(guān)鍵字和final的4種用法

    Java中final關(guān)鍵字和final的4種用法

    這篇文章主要給大家分享的是?Java中final關(guān)鍵字和final的4種用法修飾類、修飾方法、修飾變量、修飾參數(shù),下面文章具有一定的參考價值,需要的小伙伴可以參考一下
    2021-11-11
  • SpringBoot監(jiān)控SQL運(yùn)行情況的流程步驟

    SpringBoot監(jiān)控SQL運(yùn)行情況的流程步驟

    Druid是Java語言中最好的數(shù)據(jù)庫連接池,雖然?HikariCP?的速度稍快,但是,Druid能夠提供強(qiáng)大的監(jiān)控和擴(kuò)展功能?,也是阿里巴巴的開源項目,本文給大家介紹了SpringBoot監(jiān)控SQL運(yùn)行情況的流程步驟,需要的朋友可以參考下
    2024-03-03
  • Java 程序員掌握 Spring Boot非常有必要

    Java 程序員掌握 Spring Boot非常有必要

    本文帶領(lǐng)大家一起來了解下 Spring Boot 到底是什么?包括springboot的誕生,springboot特征具有哪些優(yōu)勢,如何讓開發(fā)變得更簡單,帶著這些問題一起通過本文學(xué)習(xí)下吧
    2021-06-06
  • Springmvc RequestMapping請求實現(xiàn)方法解析

    Springmvc RequestMapping請求實現(xiàn)方法解析

    這篇文章主要介紹了Springmvc RequestMapping請求實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09

最新評論