<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SpringBoot整合Logback日志框架配置全解析

          共 4051字,需瀏覽 9分鐘

           ·

          2020-11-06 02:53

          點擊上方藍色字體,選擇“標星公眾號”

          優(yōu)質(zhì)文章,第一時間送達

          ? 作者?|??天喬巴夏丶

          來源 |? urlify.cn/bY3aUf

          66套java從入門到精通實戰(zhàn)課程分享

          本篇要點

          • 介紹什么是Logback

          • 介紹SpringBoot中對logging默認的配置

          • 介紹自定義logback-spring.xml的注意點

          一、Logback日志框架介紹

          SpringBoot使用 Commons Logging 進行所有內(nèi)部日志的記錄,但默認配置也提供了對常用日志的支持,如 Java Util Logging,Log4J2,和Logback. 每種logger都可以通過配置使用控制臺或文件輸出日志內(nèi)容。

          Logback是log4j框架的作者開發(fā)的新一代日志框架,它效率更高、能夠適應(yīng)諸多的運行環(huán)境,同時天然支持SLF4J。

          二、SpringBoot與Logback

          假設(shè)你使用starter啟動創(chuàng)建SpringBoot應(yīng)用,則默認已經(jīng)導(dǎo)入了spring-boot-starter-logging的依賴,相繼也就導(dǎo)入了logback所需要的依賴。

          1、默認日志格式

          于是,當我們啟動SpringBoot應(yīng)用時,控制臺將會顯示INFO級別的日志輸出。

          可以看到,輸出內(nèi)容如下:

          • 日期和時間,精確到毫秒級別。

          • 日志級別:INFO,【日志級別默認從高到低:ERROR,WARN,INFO,DEBUG,TRACE】。

          • 進程ID

          • 分隔符:來標識實際日志消息的開始。

          • 線程名:用方括號括起來(在控制臺輸出時可能被截斷)。

          • 日志記錄器名稱:這通常是源類名稱(通常縮寫)。

          • 日志信息

          logback是沒有FATAL級別的,它對應(yīng)的就是ERROR。

          2、控制臺輸出

          默認的日志配置就是將日志信息顯示到控制臺,默認情況下,將會顯示INFO級別以上的日志信息。你還可以通過使用--debug標志啟動debug模式。?

          $?java?-jar?myapp.jar?--debug

          使用IDEA操作可以編輯Program arguments:--debug。

          在application.properties中配置debug=true同樣也可以將日志級別調(diào)整到DEBUG。

          3、文件輸出

          默認情況下,SpringBoot的日志只會輸出到控制臺,如果你還想輸出到文件中,你需要配置logging.file.namelogging.file.path兩個屬性。

          下面這個表格展示如何組合使用logging.*來達到理想的效果:

          logging.file.namelogging.file.pathExampleDescription
          (none)(none)
          只會輸出到控制臺
          指定文件(none)my.log寫入指定的日志文件在當前項目目錄下
          (none)指定目錄log在當前項目下的log目錄,寫入spring.log文件

          日志文件達到10 MB時會觸發(fā)滾動策略【切分】,默認情況下會記錄INFO以上級別的信息。可以使用logging.file.max-size屬性更改大小限制。除非已設(shè)置logging.file.max-history屬性,否則默認情況下將保留最近7天的輪轉(zhuǎn)日志文件。可以使用logging.file.total-size-cap限制日志歸檔文件的總大小。當日志歸檔的總大小超過該閾值時,將刪除備份。要在應(yīng)用程序啟動時強制清除日志存檔,請使用logging.file.clean-history-on-start屬性。

          4、日志級別

          可以使用logging.level設(shè)置所有受支持的日志記錄器的級別。

          logging.level.root=warn
          logging.level.org.springframework.web=debug
          logging.level.org.hibernate=error

          5、日志組

          使用logging.group能夠?qū)⑾嚓P(guān)的logger組合在一起統(tǒng)一管理日志級別等配置。使用方法如下:

          假設(shè)定義了group為tomcat:

          logging.group.tomcat=org.apache.catalina,?org.apache.coyote,?org.apache.tomcat

          一旦這樣定義之后,就可以僅僅通過一行配置,完成相關(guān)三個logger的級別配置:

          logging.level.tomcat=TRACE

          SpringBoot預(yù)定義了兩個開箱即用的日志組:

          NameLoggers
          weborg.springframework.core.codec,?org.springframework.http,?org.springframework.web,?org.springframework.boot.actuate.endpoint.web,?org.springframework.boot.web.servlet.ServletContextInitializerBeans
          sqlorg.springframework.jdbc.core,?org.hibernate.SQL,?org.jooq.tools.LoggerListener
          #?pre-defined
          logging.level.web=debug
          logging.level.sql=debug

          6、自定義log配置

          由于日志服務(wù)一般都在ApplicationContext創(chuàng)建前就初始化了,它并不是必須通過Spring的配置文件控制。因此通過系統(tǒng)屬性和傳統(tǒng)的Spring Boot外部配置文件依然可以很好的支持日志控制和管理。

          你可以根據(jù)你的日志系統(tǒng),按照下面表格的定義規(guī)則,選擇定義對應(yīng)的日志配置:

          Logging SystemCustomization
          Logbacklogback-spring.xml,?logback-spring.groovy,?logback.xml, or?logback.groovy
          Log4j2log4j2-spring.xml?or?log4j2.xml
          JDK (Java Util Logging)logging.properties

          SpringBoot官方推薦使用帶有-spring的文件名作為配置,如logback-spring.xml而不是logback.xml

          這樣命名的好處在于:因為標準的logback.xml配置文件加載得太早,所以不能在其中使用擴展,需要使用logback-spring.xml

          當然上面是默認的命名規(guī)則,如果你想自定義xml的名稱,自定義路徑,可以通過logging.config屬性配置:logging.config=classpath:logging-config.xml

          三、logback-spring.xml自定義注意事項

          接下來分享一份配置十分詳細的logback.xml配置,參照注釋,應(yīng)該就能夠掌握xml的定義。

          "1.0"?encoding="UTF-8"?>
          "true"?scanPeriod="10?seconds"?debug="false">
          ????
          ????
          ????
          ????
          ????logback
          ????
          ????"log.path"?value="log"?/>
          ????"console_log_pattern"
          ??????????????value="%black(%contextName-)?%red(%d{yyyy-MM-dd?HH:mm:ss})?%green([%thread])?%highlight(%-5level)?%boldMagenta(%logger{36})?-?%gray(%msg%n)"/>
          ????"charset"?value="UTF-8"/>
          ????
          ????"console"?class="ch.qos.logback.core.ConsoleAppender">
          ????????
          ????????
          ?????????"ch.qos.logback.classic.filter.ThresholdFilter">
          ?????????????DEBUG
          ?????????
          ????????
          ????????????${console_log_pattern}
          ????????

          ????

          ????
          ????"info_file"?class="ch.qos.logback.core.rolling.RollingFileAppender">
          ????????"ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          ????????????${log.path}/roll_info/logback.%d{yyyy-MM-dd}.log
          ????????
          ????????
          ????????????${console_log_pattern}
          ????????????${charset}
          ????????

          ????????
          ????????"ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          ????????????
          ????????????${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log
          ????????????"ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
          ????????????????100MB
          ????????????
          ????????????
          ????????????15
          ????????
          ????????
          ????????"ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          ????????????10MB
          ????????
          ????????
          ????????"ch.qos.logback.classic.filter.LevelFilter">
          ????????????INFO
          ????????????ACCEPT
          ????????????DENY
          ????????
          ????
          ????
          ????"warn_file"?class="ch.qos.logback.core.rolling.RollingFileAppender">
          ????
          ????
          ????"error_file"?class="ch.qos.logback.core.rolling.RollingFileAppender">
          ????

          ????
          ????"info">
          ????????"console"?/>
          ????????"info_file"?/>
          ????????"warn_file"/>
          ????????"error_file"/>
          ????

          ????
          ????
          ????"com.hyh.logback.web.LogTestController"?level="WARN"?additivity="false">
          ????????"console"/>
          ????????"warn_file"/>
          ????????"error_file"/>
          ????

          ????
          ????
          ????"dev">
          ????????
          ????????"com.hyh.logback.web"?level="DEBUG">
          ????????????"console"/>
          ????????
          ????????
          ????????"INFO">
          ????????????"console"/>
          ????????
          ????

          最終的效果,會在項目路徑下生成日志文件:/log/info/log-info-2020-11-01.0.log,并且日志文件的策略也在xml中定義。

          控制臺打印信息,如下圖所示:

          配置文件下載

          本文內(nèi)容均為對優(yōu)秀博客及官方文檔總結(jié)而得,原文地址均已在文中參考閱讀處標注。最后,文中的代碼及配置文件詳細樣例已經(jīng)全部上傳至Gitee:https://gitee.com/tqbx/springboot-samples-learn

          參考閱讀

          • 嘟嘟:默認日志logback配置解析

          • SpringBoot官方文檔:Log Format

          • Logback官方文檔




          粉絲福利:實戰(zhàn)springboot+CAS單點登錄系統(tǒng)視頻教程免費領(lǐng)取

          ???

          ?長按上方微信二維碼?2 秒
          即可獲取資料



          感謝點贊支持下哈?

          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  噜噜欧美综合 | 男人的天堂网站视频 | 亚洲天堂一区二区 | 91aaa在线观看 | 亚洲AV影院 |