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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

logback基本入门

發(fā)布時間:2025/3/18 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 logback基本入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. logback的定義

  Logback是由log4j創(chuàng)始人設(shè)計的另一個開源日志組件,官方網(wǎng)站: http://logback.qos.ch。它當前分為下面下個模塊:
  logback-core:其它兩個模塊的基礎(chǔ)模塊
  logback-classic:它是log4j的一個改良版本,同時它完整實現(xiàn)了slf4j API使你可以很方便地更換成其它日志系統(tǒng)如log4j或JDK14 Logging
  logback-access:訪問模塊與Servlet容器集成提供通過Http來訪問日志的功能

2. 核心概念

  configuration: logback配置的根元素,所有的配置都基于此元素內(nèi)

  logger:    日志記錄器,命名實體,通過不同命名區(qū)分不同的日志記錄器,可以傳遞由 "." 分層的字符串,更加常用的是傳遞類信息

  appender:  ? 日志輸出目的,通過appender指定日志的輸出目的和輸出方式,可以指定輸出到控制臺、文件、數(shù)據(jù)庫、遠程機器等位置

  encoder:  ? ? 日志編碼,用戶將日志事件轉(zhuǎn)化成可讀的信息,典型場景是將日志轉(zhuǎn)化成字符串

  layout:    布局,用于指定日志輸出的格式,通過一些變量,控制符來控制日志的輸出格式

  filter:    ? ?過濾器,日志和直接輸出控制臺的區(qū)別就是日志可以控制輸出內(nèi)容和輸出內(nèi)容格式,filiter控制哪些日志應該輸出,哪些日志不應該輸出

  root:    ? ?每個配置文件有且只有一個,用戶指定根logger的配置

3. 常用的logback配置項

  configuration

    屬性: 

      debug: true / false, 設(shè)置true值的時候,第一次啟動日志記錄的時候,會輸出logback的配置信息;

      scan:? true / false, 設(shè)置true值的時候,結(jié)合?scanPeriods 來設(shè)置掃描配置文件的間隔時間

          例如: 30 seconds, 當掃描發(fā)現(xiàn)文件發(fā)生變動的時候,會將變動應用到下一次的日志記錄中;

    子元素:

      logger, appender, layout, filter, root, timestamp等

  logger

    屬性:

      name:? string, 指定該logger的名字,通過”."隔開可以制造logger層級關(guān)系,例如 x.y 是 x.y.z的父logger,當x.y.z沒有配置日志級別的時候,會繼承自父logger, 如果additivity沒有設(shè)置false的話,還會從父logger繼承appender

      level:? TRACE/DEBUG/INFO/WARN/ERROR ALL/OFF, 可以指定日志的級別,低級別會承載高級別日志的輸出,而高級別的不會,例如 DEBUG中不過濾會默認輸出DEBUG及DEBUG以上日志,ERROR只會輸出ERROR,不會輸出它以下級別的日志

    子元素:

      <appender-ref ref="xxx" /> 指向某個輸出附加器

  appender?  日志附加器, 指定當前日志輸出渠道,可以到控制臺、文件,在J2EE應用中,一般是輸出到本地機器file

    屬性:

      name: string, 當前日志輸出附加器的標識,在一個configuration中應該是唯一的

      class: logback提供的輸出附加器類型, 輸出到控制臺、文件、滾動輸出到文件、數(shù)據(jù)庫、遠程機器等都有對應的appender提供類

    子元素:

      encoder, 指定日志事件對象編碼類

      filter,過濾器,過濾 日志是否需要輸出

  root  logger的特例,在一個logback上下文中只有一個,就是根記錄器,所有的記錄器都是該記錄器的 子孫記錄器,等同于 <logger name="root" > 其他的記錄器都是 root.xx.xx.xx

    屬性:

      level: 與logger同

    子元素:

      appender: 與logger同

  property? 屬性值配置

    屬性:

      name:屬性名稱,用于在配置文件中引用,使用${xx} 方式引用

      value:屬性值, 占位符的實際代替值

  timestamp  獲取時間戳

    屬性:

      key:指定的名稱,作用同property的key

      datePattern: 時間戳格式化成格式,使用java.text.SimpleDateFormat格式化

4. 常用的appender

  主要類圖,引自logback官網(wǎng)(https://logback.qos.ch/manual/appenders.html):

  

ConsoleAppender  控制臺輸出

  屬性名:encoder:日志事件編碼,決定如何轉(zhuǎn)換日志事件

      target:可以是System.out, System.err, 默認是System.out

      withJansi: 是否支持ANSI顏色顯示日志,會稍微占用多一點磁盤空間, 默認是false

FileAppender    文件輸出

   屬性:encoder: 同上

      append:true/false, 當檢測到設(shè)置的文件名存在時候,是否需要追加到文件末尾

          true會追加,false會先將原有文件內(nèi)容清空,默認是true

      file:  輸出的文件路徑

      prudent:嚴謹模式,即使多個jvm同時指定寫入該文件,該啟動該模式也能安全地寫入文件,

           true/false, 默認是false, 實現(xiàn)的原理是利用了排它鎖,讓其他需要占用資源的線程等待

   寫入文件的時候,我們經(jīng)常需要講日志每個一個文件的名稱都唯一,那么可以使用timeStamp獲取時間戳來給文件命名保證唯一,適用于應用經(jīng)常多次運行的情況,如果需要每日自動分割成日志的話, 可以使用下面的RollingFileAppender。

    FileAppender生成唯一日志文件名配置:

<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/><appender name="FILE" class="ch.qos.logback.core.FileAppender"><!-- use the previously created timestamp to create a uniquelynamed log file --><file>log-${bySecond}.txt</file><encoder><pattern>%logger{35} - %msg%n</pattern></encoder></appender>

RollingFileAppender   滾動文件輸出

  屬性:file:  同F(xiàn)ileAppender

    append:  同F(xiàn)ileAppender

    encoder:  同F(xiàn)ileAppender

    prudent:  同F(xiàn)ileAppender

    rollingPolicy: 該配置指定當 滾動事件 觸發(fā)的時候,應該執(zhí)行哪些操作, 本節(jié)后面有詳細說明

    triggeringPolicy:   該配置指定何時會觸發(fā) 滾動時間, 本節(jié)后面有詳細說明

TimeBasedRollingPolicy    基于時間的滾動行為

  fileNamePattern:  string, 文件命名格式,一般會使用 serverName.%d.log 的形式來按照每天來滾動日志文件,%d默認是 yyyy-MM-dd 格式,按照什么單位滾動,是參照%d格式的,例如 %d{yyyy-MM}會讓日志文件按月份滾動,特別的,如果是.gz / .zip 配置該項,那么會將日志文件壓縮后保存(深夜進行壓縮,如果深夜沒有日志工作,一般在00:23 47' 進行)

  maxHistory:    int,最大日志保留單位,如果?fileNamePattern 配置按照天滾動,這個的單位是天, 如果是月,那這里單位是月,依次類推

  totalSizeCap:    int,需要maxHistory有配置,配置最大的日志保存量, 例如 5M, 2G 的配置

  cleanHistoryOnStart: boolean, 是否在啟動的時候清理歷史日志,默認是false

  樣例配置:  

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logFile.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- daily rollover --><fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern><!-- keep 30 days' worth of history capped at 3GB total size --><maxHistory>30</maxHistory><totalSizeCap>3GB</totalSizeCap></rollingPolicy><encoder><pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern></encoder></appender>

?

Size and time based rolling policy  基于時間和大小的滾動行為

  這個觸發(fā)行為和??TimeBasedRollingPolicy 有點像,但是他的屬性??fileNamePattern 強制兩個參數(shù) %d 和 %i?,多了一個配置參數(shù):maxFileSize,?所以他的配置文件看起來像是這樣:

<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>mylog.txt</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- rollover daily --><fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern><!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --><maxFileSize>100MB</maxFileSize> <maxHistory>60</maxHistory><totalSizeCap>20GB</totalSizeCap></rollingPolicy><encoder><pattern>%msg%n</pattern></encoder></appender>

  當時間條件未達到,但是單文件最大大小已經(jīng)達到的時候,會自動講%i 從 0 開始疊加滾動,它產(chǎn)生的日志可能是 mylog-2018-08-19-0.txt,?mylog-2018-08-19-1.txt,?mylog-2018-08-19-2.txt 這樣子,其他的和?TimeBasedRollingPolicy 一致;

FixedWindowRollingPolicy  滾動窗口輸出

  該輸出需要和滾動觸發(fā)配合使用, 屬性有:minIndex,?maxIndex,?fileNamePattern,fileNamePattern需要帶上 %i 參數(shù),使得可以生成唯一的文件名, 當達到maxIndex上限之后,文件不會再發(fā)生滾動,會一直寫入基礎(chǔ)日志文件中,它的配置文件看起來就像這樣:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>test.log</file><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>tests.%i.log.zip</fileNamePattern><minIndex>1</minIndex><maxIndex>3</maxIndex></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>5MB</maxFileSize></triggeringPolicy><encoder><pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern></encoder></appender>

SizeBasedTriggeringPolicy  基于文件大小的觸發(fā)滾動

  屬性:maxFileSize:最大文件大小,當日志文件達到該大小后,就會觸發(fā)滾動事件;

?

(后續(xù)更新)

5. Encoders

6. Layouts

7. Filters

  

?

  

  

轉(zhuǎn)載于:https://www.cnblogs.com/zhuangmingnan/p/9503053.html

總結(jié)

以上是生活随笔為你收集整理的logback基本入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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