一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

Spring Boot如何實(shí)現日志記錄SLF4J

時(shí)間:2025-12-14 10:15:07 java語(yǔ)言 我要投稿

Spring Boot如何實(shí)現日志記錄SLF4J

  Spring Boot如何實(shí)現日志記錄SLF4J?下面百分網(wǎng)小編帶大家一起來(lái)看看詳細內容,希望對大家有所幫助!想了解更多相關(guān)信息請持續關(guān)注我們應屆畢業(yè)生考試網(wǎng)!

Spring Boot如何實(shí)現日志記錄SLF4J

  在開(kāi)發(fā)中打印內容,使用 System.out.println() 和 Log4j 應當是人人皆知的方法了。

  其實(shí)在開(kāi)發(fā)中我們不建議使用 System.out 因為大量的使用 System.out 會(huì )增加資源的消耗。

  而Log4j 更為靈活在性能上也相比 System.out 要高,我們可以配置輸出級別,可以指定多個(gè)日志文件分別記錄不同的日志。

  使用 System.out 是在當前線(xiàn)程執行的,寫(xiě)入文件也是寫(xiě)入完畢后才繼續執行下面的程序。而使用Log工具不但可以控制日志是否輸出,怎么輸出,它的處理機制也是通知寫(xiě)日志,繼續執行后面的代碼不必等日志寫(xiě)完。

  如非必要,建議大家不要使用控制臺輸出,因為控制臺輸出沒(méi)有優(yōu)先級會(huì )顯得輸出太亂。

  個(gè)人推薦使用 SLF4J(Simple Logging Facade For Java)的logback來(lái)輸出日志,其比log4j 要好,因為他效率更高。

  spring Boot 提供了一套日志系統,logback是最優(yōu)先的選擇。配置了logback.xml可以利用Spring Boot提供的默認日志配置:

  <?xml version="1.0" encoding="UTF-8"?>

  <configuration>

  <include resource="org/springframework/boot/logging/logback/base.xml"/>

  <logger name="org.springframework.web" level="DEBUG"/>

  </configuration>

  這樣就定義了一個(gè) 捕獲 org.springframework.web 的日志,日志級別是 DEBUG,上面引用的base.xml 文件內容為:

  <?xml version="1.0" encoding="UTF-8"?>

  <!--

  Base logback configuration provided for compatibility with Spring Boot 1.1

  -->

  <included>

  <include resource="org/springframework/boot/logging/logback/defaults.xml" />

  <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>

  <include resource="org/springframework/boot/logging/logback/console-appender.xml" />

  <include resource="org/springframework/boot/logging/logback/file-appender.xml" />

  <root level="INFO">

  <appender-ref ref="CONSOLE" />

  <appender-ref ref="FILE" />

  </root>

  </included>

  Spring Boot的日志系統預先定義了一些系統變量:

  PID,當前進(jìn)程ID{LOG_FILE},Spring Boot配置文件(application.properties|.yml)中logging.file的值

  ${LOG_PATH}, Spring Boot配置文件中logging.path的值

  同時(shí)默認情況下包含另個(gè)appender——一個(gè)是控制臺,一個(gè)是文件,分別定義在console-appender.xml和file-appender.xml中。同時(shí)對于應用的日志級別也可以通過(guò)application.properties進(jìn)行定義:

  logging.level.org.springframework.web=DEBUG

  logging.level.org.springboot.sample=TRACE

  這樣相當于我們在logback.xml 中配置的對應的日志級別。名稱(chēng)以logging.level開(kāi)頭,后面跟要輸入日志的包名。

  如果在 logback.xml 和 application.properties 中定義了相同的配置(如都配置了 org.springframework.web)但是輸出級別不同,則實(shí)際上 application.properties 的優(yōu)先級高于 logback.xml *

  我們既然使用了maven來(lái)管理項目,我們就可以根據不同環(huán)境來(lái)定義不同的日志輸出,在 logback-spring.xml 中使用 springProfile 節點(diǎn)來(lái)定義,方法如下:

  注意文件名稱(chēng)不是logback.xml,想使用spring擴展profile支持,要以logback-spring.xml命名

  <?xml version="1.0" encoding="UTF-8"?>

  <configuration>

  <include resource="org/springframework/boot/logging/logback/base.xml" />

  <logger name="org.springframework.web" level="INFO"/>

  <logger name="org.springboot.sample" level="TRACE" />

  <springProfile name="dev">

  <logger name="org.springboot.sample" level="DEBUG" />

  </springProfile>

  <springProfile name="staging">

  <logger name="org.springboot.sample" level="INFO" />

  </springProfile>

  </configuration>

  如上我們默認為 org.springboot.sample 定義了TRACE級別的輸出,下面又定義兩個(gè) springProfile ,分別是 dev 和 staging,輸出級別分別是 DEBUG 和 INFO

  我們可以啟動(dòng)服務(wù)的時(shí)候指定 profile (如不指定使用默認),如指定staging 的方式為:

  java -jar myapp.jar --spring.profiles.active=staging

  下面介紹兩種常用的Appender

  ConsoleAppender

  Logback使用appender來(lái)定義日志輸出,在開(kāi)發(fā)過(guò)程中最常用的是將日志輸出到控制臺:

  <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">

  <encoder>

  <Pattern>.%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n</Pattern>

  </encoder>

  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

  <level>TRACE</level>

  </filter>

  </appender>

  表示對日志進(jìn)行編碼

  %d{HH:mm:ss.SSS}——日志輸出時(shí)間

  %thread——輸出日志的進(jìn)程名字,這在Web應用以及異步任務(wù)處理中很有用

  %-5level——日志級別,并且使用5個(gè)字符靠左對齊

  %logger{36}——日志輸出者的名字

  %msg——日志消息

  %n——平臺的換行符

  在這種格式下一條日志的輸出結果如下:

  10:12:51.012 [threadName] DEBUG o.c.d.r.util.LoggingResponseFilter

  RollingFileAppender

  另一種常見(jiàn)的日志輸出到文件,隨著(zhù)應用的運行時(shí)間越來(lái)越長(cháng),日志也會(huì )增長(cháng)的越來(lái)越多,將他們輸出到同一個(gè)文件并非一個(gè)好辦法。RollingFileAppender用于切分文件日志:

  <appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">

  <File>/data/log/app.log</File>

  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

  <!-- daily rollover -->

  <FileNamePattern>rest-demo.%d{yyyy-MM-dd}.log</FileNamePattern>

  <!-- keep 30 days' worth of history -->

  <maxHistory>30</maxHistory>

  </rollingPolicy>

  <encoder>

  <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>

  </encoder>

  </appender>

  其中重要的是rollingPolicy的定義,上例中rest-demo.%d{yyyy-MM-dd}.log定義了日志的切分方式——把每一天的日志歸檔到一個(gè)文件中,30表示只保留最近30天的日志,以防止日志填滿(mǎn)整個(gè)磁盤(pán)空間。同理,可以使用%d{yyyy-MM-dd_HH-mm}來(lái)定義精確到分的日志切分方式。

  Sentry

  Sentry是一個(gè)統一的日志跟蹤平臺,在傳統的日志管理中,都是在服務(wù)器上通過(guò)tail, vim等工具查看日志,并且不同的日志位置也個(gè)不相同,而Sentry則是將這些日志(主要是錯誤日志)通過(guò)統一的接口收集起來(lái),并且提供跟蹤、管理的功能,使得應用程序的錯誤、Bug能夠即時(shí)被解決。

  Sentry提供了Java庫——Raven Java,Java應用程序能夠在捕獲異常后將其發(fā)送到Sentry服務(wù)器中,另一方面它包含了各類(lèi)日志框架的支持,以L(fǎng)ogbakc為例:

  <dependency>

  <groupId>net.kencochrane.raven</groupId>

  <artifactId>raven-logback</artifactId>

  <version>6.0.0</version>

  </dependency>

  在logback.xml中定義appender:

  <configuration>

  <appender name="Sentry" class="net.kencochrane.raven.logback.SentryAppender">

  <dsn>/pic/1?options</dsn>

  <tags>tag1:value1,tag2:value2</tags>

  <!-- Optional, allows to select the ravenFactory -->

  <!--<ravenFactory>net.kencochrane.raven.DefaultRavenFactory</ravenFactory>-->

  </appender>

  <root level="warn">

  <appender-ref ref="Sentry"/>

  </root>

  </configuration>

  我們推薦在這個(gè)中加入用于過(guò)濾 ERROR 級別的日志。

  總結

  在Spring Boot 中記錄日志只需兩步:

  1、在 src/main/resources 下面創(chuàng )建logback.xml 文件,并按上面講述的進(jìn)行配置。

  或者使用最簡(jiǎn)單的方法在 application 配置文件中配置。

  2、在Java代碼中創(chuàng )建實(shí)例,并在需要輸出日志的地方使用。

  /pic/p>

  private static final Logger logger = LoggerFactory.getLogger(SpringBootSampleApplication.class);

  /pic/p>

  public void logTest() {

  logger.debug("日志輸出測試 Debug");

  logger.trace("日志輸出測試 Trace");

  logger.info("日志輸出測試 Info");

  }

【Spring Boot如何實(shí)現日志記錄SLF4J】相關(guān)文章:

Spring Boot使用slf4j+logback記錄日志配置詳解09-10

詳解Spring Boot Redis集成配置03-17

Spring Boot基于注解的Redis緩存使用10-24

講解Java的Spring框架中的AOP實(shí)現08-31

PHP滾動(dòng)日志的代碼實(shí)現09-30

如何實(shí)現硬盤(pán)對拷02-14

Java重定向輸出流實(shí)現程序日志11-27

Java中如何獲取Spring中配置的bean02-04

如何實(shí)現歸并排序03-14

  • 相關(guān)推薦
一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看