最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Logback的使用及如何配置

 更新時(shí)間:2021年03月30日 09:32:34   作者:江湖段小二  
這篇文章主要介紹了Logback的使用及如何配置,幫助大家更好的理解和學(xué)習(xí)使用Logback,感興趣的朋友可以了解下

日志在項(xiàng)目開發(fā)過程的作用不言而喻,項(xiàng)目上線后,我們需要根據(jù)日志文件定位問題發(fā)生的位置以及產(chǎn)生的原因。以前在項(xiàng)目開發(fā)中,已經(jīng)有前人在工程中配置過日志,所以完全不需要自己再進(jìn)行日志的配置。這次在新的項(xiàng)目中自己來配置日志時(shí),還是遇到了一些波折,下面慢慢道來。

1 為什么選用Logback?

目前,在Springboot工程體系中,使用較多的日志組件是Slf4j、Logback以及Log4j2。而Slf4j本身只是一個(gè)接口類,具體的實(shí)現(xiàn)還是由Logback或Log4j2來完成的。由于Springboot自身就集成了Logback,默認(rèn)使用的日志組件是Logback,Logback的體系結(jié)構(gòu)具有足夠的通用性,可以在不同的場(chǎng)景下使用。因此,在我們的DRS工程中,使用了Logback進(jìn)行日志的打印。

目前,Logback包含三個(gè)部分:logback-core, logback-classic, logback-access。 Logback-core: 為其他兩個(gè)模塊奠定了基礎(chǔ) Logback-classic: 可以被同化為log4j的一個(gè)顯著改進(jìn)的版本,此外, logback-classic實(shí)現(xiàn)了slf4japi,因此您可以方便地在logback和其他日志框架(如log4j或log4j)之間來回切換java.util.logging文件 Logback-access: 集成了Servlet容器(如Tomcat和Jetty),以提供HTTP訪問日志功能。

如果使用的是Springboot是2.4版本及以上,則不需要另外引入logback-core, logback-classic, logback-access和slf2j-api的依賴包的。

2 Logback的配置

首先,看一下我們?cè)贒RS工程中使用的Logback配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <property name="log.path" value="/duan/drs-server/logs" />
  <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
 
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>${log.pattern}</pattern>
    </encoder>
  </appender>
 
  <!-- 系統(tǒng)debug日志輸出 -->
  <appender name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}/drs-server-debug.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${log.path}/drs-server-debug.%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>${log.pattern}</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>DEBUG</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>
 
  <!-- 系統(tǒng)info日志輸出 -->
  <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}/drs-server-info.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${log.path}/drs-server-info.%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>${log.pattern}</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>INFO</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>
 
  <!-- 系統(tǒng)warn日志輸出 -->
  <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}/drs-server-warn.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${log.path}/drs-server-warn.%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>${log.pattern}</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>WARN</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>
 
  <!-- 系統(tǒng)error日志輸出 -->
  <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}/drs-server-error.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${log.path}/drs-server-error.%d{yyyy-MM-dd}.log</fileNamePattern>
      <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>${log.pattern}</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>ERROR</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>
 
  <logger name="com.nuonuo.middleware.drsserver" level="INFO" />
  <logger name="org.springframework" level="warn" />
 
  <root level="INFO">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE_DEBUG" />
    <appender-ref ref="FILE_INFO" />
    <appender-ref ref="FILE_WARN" />
    <appender-ref ref="FILE_ERROR" />
  </root>
</configuration>

說明:

屬性 說明
log.path 定義日志文件的輸出路徑
log.pattern 定義日志文件輸出格式
appender 定義了日志的輸出文件,日志文件保留時(shí)長,使用何種模式輸出,以及過濾規(guī)則。在上述文件中,分別針對(duì)DEBUG、INFO、WARN和ERROR日志進(jìn)行了定義了四個(gè)Appender
logger 用來設(shè)置某一個(gè)類或某個(gè)包的日志打印級(jí)別。在上述配置中,我們將DRS工程的日志輸出級(jí)別定義為INFO,那么,如果只想打印出DRS工程中的日志,則只需將打印級(jí)別level設(shè)置為WARN
root 是一個(gè)根logger,root下可以包含零個(gè)或多個(gè)appender。如果一個(gè)appender沒有在root下引入,則不會(huì)生成對(duì)應(yīng)的日志文件

3 Logback的輸出格式

針對(duì)以上述配置中的格式進(jìn)行說明:

%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n
字段 說明
%d{HH:mm:ss.SSS} 用于輸出日志事件的日期,其中%d也可以替換成%date,該設(shè)置對(duì)應(yīng)下圖中的紅色標(biāo)記部分
[%thread] 輸出對(duì)應(yīng)的線程名。在上面的截圖中可以看到,輸出線程是主線程main
%-5level 輸出日志級(jí)別,其中-5表示如果記錄器名稱長度小于5個(gè)字符,則右鍵填充空格
%logger{20} 輸出日志事件起源處記錄器的名稱。其中20表示輸出記錄的名稱長度限制,超過這個(gè)長度,記錄器名將會(huì)進(jìn)行縮寫。但是,記錄器名稱中最右邊的段從不縮寫,即使其長度比“長度”選項(xiàng)長。其他段可以縮短到最多一個(gè)字符,但永遠(yuǎn)不會(huì)刪除
[%method,%line] %method 輸出發(fā)出日志記錄請(qǐng)求的方法名稱,%method也可替換成%M; %line——輸出發(fā)出日志記錄請(qǐng)求的行號(hào),%line也可替換成%L
%msg 輸出應(yīng)用程序提供的與日志事件關(guān)聯(lián)的消息。其中%msg也可替換成%m或%message
%n 輸出平臺(tái)相關(guān)的行分隔符字符

4 Appender

Appender子類包含F(xiàn)ilter、Encoder、ConsoleAppender、FileAppender、以及RollingFileAppender。其類圖關(guān)系如下所示。

顧名思義目標(biāo)文件由file選項(xiàng)指定。如果該文件已存在,則根據(jù)append屬性的值將其追加或截?cái)?。RollingFileAppender 擴(kuò)展了FileAppender,具有滾動(dòng)更新日志文件的功能。

類名 encoder immediateFlush target withJansi append file prudent rollingPolicy triggeringPolicy
OutputStreamAppender
ConsoleAppender
FileAppender - -
RollingFileAppender - -

OutputStreamAppender 這個(gè)類提供了其他附加程序構(gòu)建的基本服務(wù)。該類包含兩個(gè)屬性設(shè)置: encoder—— 確定日志寫入的編碼格式。 immediateFlush——布爾值,默認(rèn)為true, 立即刷新輸出流可確保立即寫出日志事件,并且在應(yīng)用程序退出而未正確關(guān)閉附加器時(shí)不會(huì)丟失這些事件。 另一方面,將此屬性設(shè)置為“false”可能會(huì)使日志吞吐量增加四倍。同樣,如果immediateFlush設(shè)置為“false”,并且應(yīng)用程序退出時(shí)appender未正確關(guān)閉,則尚未寫入磁盤的日志事件可能會(huì)丟失。

ConsoleAppender 將日志附加在控制臺(tái)上,其包含三個(gè)屬性: encoder——略 target—— System.out或者 System.err字符串值之一 默認(rèn)目標(biāo)是 System.out withJansi——布爾值,默認(rèn)false。 將withJansi設(shè)置為true將激活Jansi庫,該庫為Windows機(jī)器上的ANSI顏色代碼提供支持。在Windows主機(jī)上,如果此屬性設(shè)置為true,則應(yīng)將網(wǎng)址:org.fusesource.jansi:jansi:1.17“在類路徑上進(jìn)行設(shè)置。請(qǐng)注意,基于Unix的操作系統(tǒng)(如Linux和macosx)默認(rèn)支持ANSI顏色代碼。一般我們很少用到,使用默認(rèn)值即可。

FileAppender 它將日志事件附加到文件中,其包含四個(gè)屬性: append——布爾值,默認(rèn)為true, 表示事件附加在現(xiàn)有文件的末尾。如果append為false,則任何現(xiàn)有文件都將被截?cái)唷?encoder——略 file—— 要寫入的文件的名稱, 如果文件不存在,則創(chuàng)建該文件。 如果文件的父目錄不存在,F(xiàn)ileAppender將自動(dòng)創(chuàng)建它,包括任何必要但不存在的父目錄。 prudent——布爾值,默認(rèn)值為false。如果設(shè)置為true, FileAppender將安全地寫入指定的文件,即使存在運(yùn)行在不同jvm(可能運(yùn)行在不同主機(jī)上)中的其他FileAppender實(shí)例。

RollingFileAppender 擴(kuò)展了FileAppender,具有滾動(dòng)更新日志文件的功能,其包含以下幾個(gè)屬性: file——略 append——略 encoder——略 rollingPolicy—— 此選項(xiàng)是在發(fā)生滾動(dòng)時(shí)指定RollingFileAppender行為的組件,包含SizeAndTimeBasedRollingPolicy、FixedWindowRollingPolicy、TimeBasedRollingPolicy。在上述配置中我們使用的是最為廣泛的TimeBasedRollingPolicy。 triggeringPolicy—— 此選項(xiàng)是通知RollingFileAppender何時(shí)激活滾動(dòng)更新過程的組件 prudent——布爾值,當(dāng)為true時(shí),不支持FixedWindowRollingPolicy。

5 Logback使用過程中遇到的問題

起初,在配置完logback.xml文件后,始終無法將日志輸出到指定目錄。 第一步,調(diào)試確認(rèn)使用的是logback組件; 第二步,引入logback-core、logback-classic、logback-access和slf4j-api對(duì)應(yīng)的jar包,驗(yàn)證是否可以將日志輸出到指定目錄。驗(yàn)證后發(fā)現(xiàn),仍然無法解決問題,于是將引入的jar包刪除。 第三步,排除springboot中包含的log4j2相關(guān)的jar,驗(yàn)證后仍無法解決問題。 第四步,在網(wǎng)上查到可能跟配置文件的命名有關(guān),有說logback-spring.xml加載的優(yōu)先級(jí)最高,于是將文件名由logback.xml改為logback-spring.xml,但是仍然無法解決問題。官網(wǎng)上看到的加載順序是: logback-test.xml> logback.groovy> logback.xml。具體可見官方文檔logback.qos.ch/manual/conf… 第五步,懷疑可能沒加載logback.xml文件,于是在application.properties中加入logging.config=classpath:logback.xml,啟動(dòng)工程時(shí)報(bào)錯(cuò),錯(cuò)誤信息是: class path resource [logback.xml] cannot be resolved to URL because it does not exist。

根據(jù)錯(cuò)誤信息可以看到,系統(tǒng)中根本沒有加載到logback.xml文件。 第六步,由于第五步驗(yàn)證系統(tǒng)根本沒有加載到logback.xml文件,于是檢查了一下pom.xml文件,發(fā)現(xiàn)在build時(shí),沒有引入資源文件,于是修改pom.xml文件,添加如下內(nèi)容,成功將日志輸出到指定目錄。

<resource>
  <directory>src/main/resources</directory>
  <includes>
    <include>**/*.xml</include>
  </includes>
  <filtering>false</filtering>
</resource>

以上就是Logback的使用及如何配置的詳細(xì)內(nèi)容,更多關(guān)于Logback的使用和配置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一個(gè)Java中BigDecimal的問題記錄

    一個(gè)Java中BigDecimal的問題記錄

    這篇文章主要給大家介紹了關(guān)于Java中一個(gè)BigDecimal問題的相關(guān)資料,通過文中介紹的方法可以很方便的解決BigDecimal進(jìn)行計(jì)算的時(shí)候不管怎么計(jì)算,最后得到的值都沒有變化的問題,需要的朋友可以參考下
    2021-11-11
  • 利用JavaFX工具構(gòu)建Reactive系統(tǒng)

    利用JavaFX工具構(gòu)建Reactive系統(tǒng)

    這篇文章主要介紹了使用JavaFX構(gòu)建Reactive系統(tǒng),利用JavaFX工具集中的新的超棒特性來構(gòu)建響應(yīng)式的快速應(yīng)用程序,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Google Guava 緩存工具使用詳解

    Google Guava 緩存工具使用詳解

    這篇文章主要介紹了Guava自加載緩存LoadingCache使用指南,通過這些內(nèi)容介紹,了解了LoadingCache的基本原理和用法,包括如何創(chuàng)建和配置緩存,以及如何結(jié)合Java?8的特性來優(yōu)化代碼,需要的朋友可以參考下
    2023-12-12
  • java this super使用方法詳解

    java this super使用方法詳解

    Java中this、super關(guān)鍵字的用法簡單說明:super是Java語言的保留字,用來指向類的超類,本文將詳細(xì)介紹,需要的朋友可以參考下
    2012-12-12
  • 詳解Java接口的相關(guān)知識(shí)

    詳解Java接口的相關(guān)知識(shí)

    今天給大家?guī)淼氖顷P(guān)于Java基礎(chǔ)的相關(guān)知識(shí),文章圍繞著Java接口展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • java遞歸算法的實(shí)例詳解

    java遞歸算法的實(shí)例詳解

    在本篇文章里小編給大家整理了關(guān)于java遞歸算法的實(shí)例內(nèi)容,以及相關(guān)知識(shí)點(diǎn)總結(jié),需要的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • java循環(huán)結(jié)構(gòu)、數(shù)組的使用小結(jié)

    java循環(huán)結(jié)構(gòu)、數(shù)組的使用小結(jié)

    這篇文章主要介紹了java循環(huán)結(jié)構(gòu)、數(shù)組的使用小結(jié),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • idea在用Mybatis時(shí)xml文件sql不提示解決辦法(提示后背景顏色去除)

    idea在用Mybatis時(shí)xml文件sql不提示解決辦法(提示后背景顏色去除)

    mybatis的xml文件配置的時(shí)候,有時(shí)候會(huì)沒有提示,這讓我們很頭疼,下面這篇文章主要給大家介紹了關(guān)于idea在用Mybatis時(shí)xml文件sql不提示的解決辦法,提示后背景顏色去除的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • 詳解Java的Hibernate框架中的Interceptor和Collection

    詳解Java的Hibernate框架中的Interceptor和Collection

    這篇文章主要介紹了Java的Hibernate框架中的Interceptor和Collection,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2016-01-01
  • 代碼詳解Java猴子選王問題(約瑟夫環(huán))

    代碼詳解Java猴子選王問題(約瑟夫環(huán))

    本篇文章通過實(shí)例給大家分析了java約瑟夫環(huán)這個(gè)經(jīng)典內(nèi)容,有興趣的跟著小編一起學(xué)習(xí)下吧。
    2018-02-02

最新評(píng)論

苏尼特左旗| 金山区| 鹤岗市| 竹溪县| 剑阁县| 临清市| 揭西县| 鲜城| 镇远县| 福安市| 阜新| 白银市| 宜良县| 邵武市| 成安县| 枣阳市| 苏尼特右旗| 鄂温| 镇远县| 诏安县| 曲沃县| 柘城县| 宁城县| 夹江县| 西盟| 泌阳县| 紫阳县| 济阳县| 江华| 晋江市| 淮阳县| 东莞市| 米泉市| 马公市| 彰化县| 云霄县| 上犹县| 饶平县| 项城市| 上杭县| 绥化市|