日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

qt能使用logback_Spring boot使用logback实现日志配置

發(fā)布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt能使用logback_Spring boot使用logback实现日志配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

歡迎關(guān)注頭條號:老顧聊技術(shù)

精品原創(chuàng)技術(shù)分享,知識的組裝工

目錄

  1. 前言
  2. 常用日志組件
  3. 什么是日志門面和日志實現(xiàn)
  4. 常見的日志框架
  5. 日志使用
  6. @slf4j注解
  7. 日志的配置
  8. logback-spring配置
  9. 總結(jié)

前言

日志是我們系統(tǒng)必備的功能之一,可以幫助我們開發(fā)人員定位系統(tǒng)的異常、錯誤以及運行流程的重要的工具。今天老顧就來介紹一下Spring boot的默認(rèn)的logback日志框架

常用日志組件

java開發(fā)日志處理是發(fā)現(xiàn)和調(diào)試bug所必不可少的,現(xiàn)在企業(yè)中常用的日志組件有哪些呢?JCL 、 JUL、 SLF4j、Log4j、 Log4j2 、 Logback、 jboss-loggin 等,是不是很亂,很多開發(fā)人員對日志框架理解的不夠透徹,一般日志是配套出現(xiàn)的,一般是由一個日志門面和一個日志實現(xiàn)配套使用。

什么是日志門面和日志實現(xiàn)?

日志門面:是日志實現(xiàn)的抽象層。

日志實現(xiàn):具體的日志功能的實現(xiàn)。

為什么不直接使用日志實現(xiàn),而是又弄了一個叫日志門面的東西?

因為日志實現(xiàn),可能會有一些代碼的優(yōu)化和改動,避免影響用戶在項目中的使用,使用日志門面這些統(tǒng)一的接口,假設(shè)在實現(xiàn)層代碼做了更改,用戶在項目中使用日志而調(diào)用的接口等等都是不會受影響的

常見的日志框架有哪些?

在實際使用中,是選擇一個抽象層的日志門面搭配一個底層日志實現(xiàn)來使用的。

SpringBoot中默認(rèn)選擇的搭配是:slf4j+logback

下面分別了解一下以上提到的各種門面和實現(xiàn)。

JCL:最后一次版本更新停在了2014年,后來沒有繼續(xù)維護(hù)更新,一般不考慮選用

slf4j:這里提一下日志實現(xiàn)里面的log4j和logback,這兩個實現(xiàn)和門面slf4j都是同一個人寫的,他先寫了log4j后,覺得性能可以再做優(yōu)化,又寫了logback,為了有更加適配的門面,自己又為log4j和logback量身打造了門面slf4j。所以這三者里面最優(yōu)的搭配當(dāng)然是slf4j+logback

JUL:是java.util.logging包下提供的日志實現(xiàn)。實現(xiàn)簡陋,很多地方受到開發(fā)者的吐槽,所以 首先排除

jboss-loggin:自誕生之初,就不是為了服務(wù)大眾,不受到什么青睞。

log4j2:log4j問世之后,apache公司發(fā)現(xiàn)了日志市場,自家也開發(fā)了一款叫l(wèi)og4j2的產(chǎn)品。

下面老顧就介紹如何配置和使用 SLF4j + logback

日志的使用

先上一段測試代碼

在這里 ,我們需要在每個類中創(chuàng)建一個 Logger對象,并且使用當(dāng)前類的類名來創(chuàng)建,那么 這個類名存在的意義在哪里?我們可以先運行 第一個測試,看下結(jié)果

是不是少了個debug日志,下面會介紹,不急

由上圖可知,我們的類名在日志中是為了方便我們找到異常是在哪個類中,進(jìn)行鎖定。因此,使用類名創(chuàng)建的logger的作用就是在這里,但是如果我們需要在每個類中都這樣的創(chuàng)建一個logger對象,不方便,因此可以通過一個注解來幫我們實現(xiàn)那就是@Slf4j ,該注解就可以幫我們自動創(chuàng)建一個log對象。

@Slf4j注解

使用 @Slf4j注解需要兩點

1.安裝lombok插件,可上網(wǎng)查閱

2.添加 lombok的依賴

org.projectlombok    lombok    provided

修改代碼

上面的日志輸出方式,是默認(rèn)方式;怎么設(shè)置日志輸出,我們來看看怎么配置?

日志的配置

日志可以通過兩種方法配置,一種是application.yml配置,一種是lobback-spring.xml配置。

application.yml配置

這種配置方法 配置項較少,一般有以下屬性配置

1. 配置輸出格式 為 時間 - 消息 換行

logging:  pattern:    console: "%d - %msg%n"

2. 配置日志輸出位置

logging:  path: /Users/gujiachun/Downloads

運行后,我們可以看到Downloads下生成了一個文件spring.log這文件是spring生成

3. 配置日志輸出文件 ,這樣可以指定日志輸出到哪個文件

logging:  file: /Users/gujiachun/Downloads/test.log

我們可以看到在Downloads生成了test文件

這里注意:我們可以配置日志保存位置,以及具體輸出的文件,如果同時配置的話,會使用我們指定的file為主

4. 配置日志 輸出級別

日志一般主要看重的有5個級別,優(yōu)先級如 DEBUG,而springboot默認(rèn)配置是INFO級別,所以我們測試代碼中寫了三行,在結(jié)果中我們只看到了info 和 error,因為debug優(yōu)先級比info低,所以我們看不到。

那么我們配置一下格式 logging.level.包名或類名: 級別 即可, 舉例如下

logging:  pattern:    console: "%d - %msg%n"  file: /Users/gujiachun/Downloads/test.log  level:    #這里可以是包名也可以是類名    com.rainbow.goods.test: debug

運行后,我們可以看到 原來只能看到 info 和 error 的,現(xiàn)在的debug也可以看到

lobback-spring.xml 配置

一、我們先把application.yml的關(guān)于日志的注釋掉,新建一個文件logback-spring.xml,為什么要取這個名字呢,Spring Boot官方推薦優(yōu)先使用帶有-spring的文件名作為你的日志配置(如使用logback-spring.xml,而不是logback.xml),如果我們想自定義名字,可以在 application.yml中通過logging.config=classpath:/xxx.xml等方式配置。

二、注意幾個 xml節(jié)點的含義

1、根節(jié)點包含的屬性

scan:當(dāng)此屬性設(shè)置為 true 時,配置文件如果發(fā)生改變,將會被重新加載,默認(rèn)true 。

scanPeriod:設(shè)置監(jiān)測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認(rèn)單位是毫秒。當(dāng) scan 為 true 時,此屬性生效。默認(rèn)的時間間隔為1分鐘。

debug:當(dāng)此屬性設(shè)置為 true 時,將打印出 logback 內(nèi)部日志信息,實時查看 logback 運行狀態(tài)。默認(rèn)值為 false

2、子節(jié)點

root節(jié)點是必選節(jié)點,用來指定最基礎(chǔ)的日志輸出級別,只有一個level屬性。

level:用來設(shè)置打印級別,大小寫無關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設(shè)置為INHERITED或者同義詞NULL。默認(rèn)是DEBUG。可以包含零個或多個元素,標(biāo)識這個appender將會添加到這個loger。

3、子節(jié)點 設(shè)置上下文名稱

每個logger都關(guān)聯(lián)到logger上下文,默認(rèn)上下文名稱為“default”。但可以使用設(shè)置成其他名字,用于區(qū)分不同應(yīng)用程序的記錄。一旦設(shè)置,不能修改,可以通過 %contextName 來打印日志上下文名稱,一般來說我們不用這個屬性,可有可無。

4、子節(jié)點 設(shè)置變量

用來定義變量值的標(biāo)簽, 有兩個屬性,name和value;其中name的值是變量的名稱,value的值時變量定義的值。通過定義的值會被插入到logger上下文中。定義變量后,可以使“${}”來使用變量。

5、子節(jié)點

appender用來格式化日志輸出節(jié)點,有倆個屬性name和class,class用來指定哪種輸出策略,常用就是控制臺輸出策略和文件輸出策略。控制臺輸出 ConsoleAppender

6、子節(jié)點五

用來設(shè)置某一個包或者具體的某一個類的日志打印級別、以及指定 。 僅有一個 name 屬性,一個可選的 level 和一個可選的 addtivity 屬性。

name :用來指定受此loger約束的某一個包或者具體的某一個類。

level :用來設(shè)置打印級別,大小寫無關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,還有一個特俗值INHERITED或者同義詞NULL,代表強制執(zhí)行上級的級別。如果未設(shè)置此屬性,那么當(dāng)前l(fā)oger將會繼承上級的級別。

addtivity :是否向上級loger傳遞打印信息。默認(rèn)是true。

簡要說明

appender:配置項,規(guī)則,通過這個節(jié)點內(nèi)容配置,我們可以配置輸出位置(控制臺,文件),輸出格式等

root:根節(jié)點,表明整個項目基本的日志級別,里面可以應(yīng)用多個appender規(guī)則

在上面的 logback-spring.xml中,appender配置了一個規(guī)則, ConsoleAppender表明日志輸出到控制臺,layout表明輸出格式,root節(jié)點配置表明該項目基礎(chǔ)的日志級別為info,引入 控制臺輸出的規(guī)則,那么我們運行看結(jié)果

從結(jié)果上來看,配置的是 info級別,所以 debug的沒有輸出,現(xiàn)在如果我想把日志輸出到文件怎么處理呢,可以使用如下配置,添加一個 appender規(guī)則,由于日志可能比較多,一般是按照日期來輸出日志,因此如下配置了每天一個日志到指定位置

啟動執(zhí)行

如果我們想把info的日志和error的日志區(qū)分到兩個文件放置,該怎么寫呢?

我們可以新建一個規(guī)則,結(jié)構(gòu)如上圖,只是在里面添加了一個過濾器,使用的是范圍過濾,也就是攔截Error級別的信息,如下

啟動執(zhí)行

運行后,我們可以在Downloads下的error.log中看到 里面只有一條記錄,關(guān)于error的記錄,但是我們在info的那個文件中,依舊有info和error的信息,那么如果將info提取出來呢? 能不能也想這樣添加一個過濾器呢,測試一下,經(jīng)過測試我們發(fā)現(xiàn)沒有作用,因為攔截info,error還是會顯示,因為error的優(yōu)先級高,那么我們可以利用LevelFilter方法來處理,如下

運行后,發(fā)現(xiàn)確實實現(xiàn)了 info 和 error的日志分開,但是 在上圖例子中,雖然我們排除了 error,但是除開info,如果我們還有 warn級別的日志信息,還是會輸出在 info.log文件中,因為warn優(yōu)先級比info高,但是我們只是攔截了error而已。

總結(jié)

以上介紹了logback的基本用法,下一篇老顧會介紹多環(huán)境下的使用,以及生產(chǎn)環(huán)境如何配置,謝謝!!!

---End---


總結(jié)

以上是生活随笔為你收集整理的qt能使用logback_Spring boot使用logback实现日志配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。