亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Spring Boot實現(xiàn)日志記錄 SLF4J

 更新時間:2017年05月13日 17:24:22   作者:catoop  
本篇文章主要介紹了詳解Spring Boot實現(xiàn)日志記錄 SLF4J,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

而Log4j 更為靈活在性能上也相比 System.out 要高,我們可以配置輸出級別,可以指定多個日志文件分別記錄不同的日志。
使用 System.out 是在當前線程執(zhí)行的,寫入文件也是寫入完畢后才繼續(xù)執(zhí)行下面的程序。而使用Log工具不但可以控制日志是否輸出,怎么輸出,它的處理機制也是通知寫日志,繼續(xù)執(zhí)行后面的代碼不必等日志寫完。

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

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

spring Boot 提供了一套日志系統(tǒng),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>

這樣就定義了一個 捕獲 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的日志系統(tǒng)預先定義了一些系統(tǒng)變量:

PID,當前進程ID{LOG_FILE},Spring Boot配置文件(application.properties|.yml)中l(wèi)ogging.file的值

${LOG_PATH}, Spring Boot配置文件中l(wèi)ogging.path的值

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

logging.level.org.springframework.web=DEBUG
logging.level.org.springboot.sample=TRACE

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

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

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

注意文件名稱不是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級別的輸出,下面又定義兩個 springProfile ,分別是 dev 和 staging,輸出級別分別是 DEBUG 和 INFO
我們可以啟動服務的時候指定 profile (如不指定使用默認),如指定staging 的方式為:

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

下面介紹兩種常用的Appender

ConsoleAppender

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

<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> 

表示對日志進行編碼

  1. %d{HH:mm:ss.SSS}——日志輸出時間
  2. %thread——輸出日志的進程名字,這在Web應用以及異步任務處理中很有用
  3. %-5level——日志級別,并且使用5個字符靠左對齊
  4. %logger{36}——日志輸出者的名字
  5. %msg——日志消息
  6. %n——平臺的換行符

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

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

RollingFileAppender

另一種常見的日志輸出到文件,隨著應用的運行時間越來越長,日志也會增長的越來越多,將他們輸出到同一個文件并非一個好辦法。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定義了日志的切分方式——把每一天的日志歸檔到一個文件中,30表示只保留最近30天的日志,以防止日志填滿整個磁盤空間。同理,可以使用%d{yyyy-MM-dd_HH-mm}來定義精確到分的日志切分方式。

Sentry

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

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

 <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>https://publicKey:secretKey@host:port/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>

我們推薦在這個中加入用于過濾 ERROR 級別的日志。

總結

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

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

或者使用最簡單的方法在 application 配置文件中配置。

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

// 在Java類中創(chuàng)建 logger 實例
private static final Logger logger = LoggerFactory.getLogger(SpringBootSampleApplication.class);
// 在方法中使用日志輸出,如
public void logTest() {
  logger.debug("日志輸出測試 Debug");
  logger.trace("日志輸出測試 Trace");
  logger.info("日志輸出測試 Info");
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Idea Jrebel 報錯:Cannot reactivate,offline seat in use

    Idea Jrebel 報錯:Cannot reactivate,offline 

    本文主要介紹了Idea Jrebel 報錯:Cannot reactivate,offline seat in use,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • RSA加密的方式和解密方式實現(xiàn)方法(推薦)

    RSA加密的方式和解密方式實現(xiàn)方法(推薦)

    下面小編就為大家?guī)硪黄猂SA加密的方式和解密方式實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java中的抽象類和接口你了解嗎

    Java中的抽象類和接口你了解嗎

    這篇文章主要為大家詳細介紹了Java中的抽象類和接口,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java實現(xiàn)多線程大批量同步數(shù)據(jù)(分頁)

    Java實現(xiàn)多線程大批量同步數(shù)據(jù)(分頁)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)多線程大批量同步數(shù)據(jù)(分頁),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Java語言中的自定義類加載器實例解析

    Java語言中的自定義類加載器實例解析

    這篇文章主要介紹了Java語言中的自定義類加載器實例解析,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • java實現(xiàn)將域名解析成ip示例

    java實現(xiàn)將域名解析成ip示例

    這篇文章主要介紹了java實現(xiàn)將域名解析成ip示例,需要的朋友可以參考下
    2014-04-04
  • Java比較器實現(xiàn)方法項目案例

    Java比較器實現(xiàn)方法項目案例

    這篇文章主要介紹了Java比較器實現(xiàn)方法,結合具體項目案例形式分析了Java比較器相關排序操作技巧,需要的朋友可以參考下
    2019-03-03
  • mybatis-plus配置日志兩種實現(xiàn)方式

    mybatis-plus配置日志兩種實現(xiàn)方式

    這篇文章主要給大家介紹了關于mybatis-plus配置日志兩種實現(xiàn)方式的相關資料,Mybatis-plus集成了日志框架,可以將程序運行時產(chǎn)生的日志進行記錄,方便開發(fā)人員進行問題排查,需要的朋友可以參考下
    2023-09-09
  • Java底層基于鏈表實現(xiàn)集合和映射--集合Set操作詳解

    Java底層基于鏈表實現(xiàn)集合和映射--集合Set操作詳解

    這篇文章主要介紹了Java底層基于鏈表實現(xiàn)集合和映射集合Set操作,結合實例形式詳細分析了Java使用鏈表實現(xiàn)集合和映射相關原理、操作技巧與注意事項,需要的朋友可以參考下
    2020-03-03
  • 如何在Spring boot加入shiro支持

    如何在Spring boot加入shiro支持

    這篇文章主要介紹了如何在Spring boot加入shiro支持,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12

最新評論