1. 程式人生 > >spring boot slf4j日記記錄配置詳解

spring boot slf4j日記記錄配置詳解

      最好的演示說明,不是上來就貼配置檔案和程式碼,而是,先來一波配置檔案的註釋,再來一波程式碼的測試過程,最後再出個技術在專案中的應用效果,這樣的循序漸進的方式,才會讓讀者更加清楚的理解一項技術是如何運用在專案中的,雖然本篇很簡單,幾乎不用手寫什麼程式碼,但是,比起網上其他人寫的同類型的文章來說,我只能說,我很認真,認真的有點帥,哈哈哈哈。

一、日誌記錄相關依賴,首選Spring-Boot"原生態"的logback

Logback是由 log4j創始人設計的又一個開源日誌元件

logback當前分成三個模組:

logback-core

logback- classic

logback-access

logback-core是其它兩個模組的基礎模組

如果在你的pom.xml中,依賴瞭如下內容


恭喜你,本篇你可以不用再新增日誌元件的依賴了,為什麼呢,我們看下spring-boot-starter-web的依賴樹


二、當前Spring-Boot專案的目錄結構

說明:如果只是為了貼程式碼,而不結合專案演示的話,我寫本篇的初衷也就沒什麼意義了


三、本篇重點,logback-boot.xml內容解說
(1)主要看註釋
  1. <configuration>
  2.     <!-- %m輸出的資訊,%p日誌級別,%t執行緒名,%d日期,%c類的全名,%i索引【從數字0開始遞增】,,, -->
  3.     <!-- appender是configuration的子節點,是負責寫日誌的元件。 -->
  4.     <!-- ConsoleAppender:把日誌輸出到控制檯 -->
  5.     <appendername="STDOUT"class="ch.qos.logback.core.ConsoleAppender">
  6.         <encoder>
  7.             <pattern>%d %p (%file:%line\)- %m%n</pattern>
  8.             <!-- 控制檯也要使用UTF-8,不要使用GBK,否則會中文亂碼 -->
  9.             <charset>UTF-8</charset>
  10.         </encoder>
  11.     </appender>
  12.     <!-- RollingFileAppender:滾動記錄檔案,先將日誌記錄到指定檔案,當符合某個條件時,將日誌記錄到其他檔案 -->
  13.     <!-- 以下的大概意思是:1.先按日期存日誌,日期變了,將前一天的日誌檔名重新命名為XXX%日期%索引,新的日誌仍然是sys.log -->
  14.     <!--             2.如果日期沒有發生變化,但是當前日誌的檔案大小超過1KB時,對當前日誌進行分割 重新命名-->
  15.     <appendername="syslog"
  16.         class="ch.qos.logback.core.rolling.RollingFileAppender">
  17.         <File>log/sys.log</File>
  18.         <!-- rollingPolicy:當發生滾動時,決定 RollingFileAppender 的行為,涉及檔案移動和重新命名。 -->
  19.         <!-- TimeBasedRollingPolicy: 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動 -->
  20.         <rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  21.             <!-- 活動檔案的名字會根據fileNamePattern的值,每隔一段時間改變一次 -->
  22.             <!-- 檔名:log/sys.2017-12-05.0.log -->
  23.             <fileNamePattern>log/sys.%d.%i.log</fileNamePattern>
  24.             <!-- 每產生一個日誌檔案,該日誌檔案的儲存期限為30天 -->
  25.             <maxHistory>30</maxHistory>
  26.             <timeBasedFileNamingAndTriggeringPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  27.                 <!-- maxFileSize:這是活動檔案的大小,預設值是10MB,本篇設定為1KB,只是為了演示 -->
  28.                 <maxFileSize>1KB</maxFileSize>
  29.             </timeBasedFileNamingAndTriggeringPolicy>
  30.         </rollingPolicy>
  31.         <encoder>
  32.             <!-- pattern節點,用來設定日誌的輸入格式 -->
  33.             <pattern>
  34.                 %d %p (%file:%line\)- %m%n    
  35.             </pattern>
  36.             <!-- 記錄日誌的編碼 -->
  37.             <charset>UTF-8</charset><!-- 此處設定字符集 -->
  38.         </encoder>
  39.     </appender>
  40.     <!-- 控制檯輸出日誌級別 -->
  41.     <rootlevel="info">
  42.         <appender-refref="STDOUT"/>
  43.     </root>
  44.     <!-- 指定專案中某個包,當有日誌操作行為時的日誌記錄級別 -->
  45.     <!-- com.appley為根包,也就是隻要是發生在這個根包下面的所有日誌操作行為的許可權都是DEBUG -->
  46.     <!-- 級別依次為【從高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  -->
  47.     <loggername="com.appleyk"level="DEBUG">
  48.         <appender-refref="syslog"/>
  49.     </logger>
  50. </configuration>

(2)application.properties中初始化logback-boot.xml
  1. #在application.properties檔案中引入日誌配置檔案  
  2. #=====================================  log  =============================  
  3. logging.config=classpath:logback-boot.xml  



logback日誌的配置我們已經弄完了,接下來就是演示了

四、定義全域性異常捕獲類【含異常訊息的日誌輔助記錄】

主要看內容,內容看懂了,就知道logback日誌記錄在什麼時候發揮作用了

(1)GlobalExceptionHandler.java

  1. package com.appleyk.exception;  
  2. import javax.servlet.http.HttpServletRequest;  
  3. import javax.servlet.http.HttpServletResponse;  
  4. import org.slf4j.Logger;  
  5. import org.slf4j.LoggerFactory;  
  6. import org.springframework.web.bind.MissingServletRequestParameterException;  
  7. import org.springframework.web.bind.annotation.CrossOrigin;  
  8. import org.springframework.web.bind.annotation.ExceptionHandler;  
  9. import org.springframework.web.bind.annotation.RestControllerAdvice;  
  10. import com.appleyk.result.ResponseResult;  
  11. @CrossOrigin
  12. @RestControllerAdvice
  13. publicclass GlobalExceptionHandler {  
  14.      privatestatic Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class);  
  15.     @ExceptionHandler
  16.     public ResponseResult processException(Exception ex, HttpServletRequest request, HttpServletResponse response){  
  17. 相關推薦

    spring boot slf4j日記記錄配置

          最好的演示說明,不是上來就貼配置檔案和程式碼,而是,先來一波配置檔案的註釋,再來一波程式碼的測試過程,最後再出個技術在專案中的應用效果,這樣的循序漸進的方式,才會讓讀者更加清楚的理解一項技術是如何運用在專案中的,雖然本篇很簡單,幾乎不用手寫什麼程式

    筆記:Spring Cloud Ribbon 客戶端配置

    核心內容 framework 統計信息 結構 ble ogr 清單 接口實現 進行 自動化配置 由於 Ribbon 中定義的每一個接口都有多種不同的策略實現,同時這些接口之間又有一定的依賴關系,Spring Cloud Ribbon 中的自動化配置能夠很方便的自動化構

    日誌組件slf4j介紹及配置

    utf 字段 als itl -- owa 輸出結果 apt 查找 1 基本介紹 每一個Java程序員都知道日誌對於任何一個Java應用程序尤其是服務端程序是至關重要的,而很多程序員也已經熟悉各種不同的日誌庫,如java.util.logging、Apache log4j、

    Spring-boot(二)WebMvcConfigurerAdapter

    定義 WebMvcConfigurationAdapter是一個配置類,該配置類主要利用@Bean方式來配置,該配置類裡的配置主要功能是針對Http請求作統一處理。我們想要使用這樣的配置方式,需要自定義一個類取繼承這個配置類。 具體的API方法功能 以下的API中WebCon

    spring+maven不同環境讀取配置

    spring+maven不同環境讀取配置詳解 轉載:https://blog.csdn.net/xiao__miao/article/details/78460725 首先這個我看了網上很多資料,但我發現,由於自己一些技術的不熟悉,對於他人的文章有些誤解,導致我打包部署失敗。 話不多說,

    深入Spring Boot (五):日誌使用

    Spring Boot內部使用Commons Logging記錄所有日誌,它支援使用Java Util Logging、Log4J2和Logback日誌工具,併為它們提供了預設配置,預設配置情況下日誌只會輸出到控制檯,當然也可以修改配置將日誌輸出到檔案。 本篇

    spring boot(四):thymeleaf使用

    在上篇文章springboot(二):web綜合開發中簡單介紹了一下thymeleaf,這篇文章將更加全面詳細的介紹thymeleaf的使用。thymeleaf 是新一代的模板引擎,在spring4.0中推薦使用thymeleaf來做前端模版引擎。 thymeleaf介紹 簡單說, Thymeleaf 是一

    Spring MVC的web.xml配置(轉)

    出處http://blog.csdn.net/u0107967901、spring 框架解決字串編碼問題:過濾器 CharacterEncodingFilter(filter-name) 2、在web.xml配置監聽器ContextLoaderListener(listene

    spring boot 原始碼解析32-PublicMetrics

    前言 接下來的幾篇文章我們來分析一下spring-boot-actuator 中在org.springframework.boot.actuate.metrics中的程式碼,如圖: 這裡的程式碼不僅多,而且還比較複雜(類與類之間的關聯關係).我們的策略是

    跟我學Spring Cloud(Finchley版)-20-Spring Cloud Config-Git倉庫配置

    配置中心 開始 deb cat search ati -c rep ring   在跟我學Spring Cloud(Finchley版)-19-配置中心-Spring Cloud Config 一節中,已實現使用Git倉庫作為Config Server的後端存儲,本節詳細探

    spring boot整合使用JdbcTemplate之!!

    spring boot 對資料庫操作在jdbc上做了進一步的封裝,jdbcTemplate提供了基於註解的事務管理功能,spring可以通過註解的形式,把DataSouce資料來源直接注入到jdbcTemplate中。1,加入Maven依賴<dependency>

    (轉)Spring Boot(四):Thymeleaf 使用

    2.3 學習筆記 2.0 ont 頁面效果 gmv spec 路徑 edi http://www.ityouknow.com/springboot/2016/05/01/spring-boot-thymeleaf.html 在上篇文章Spring Boot (二):Web

    《Java Spring框架》Spring切面(AOP)配置

    1.  Spring 基本概念 AOP(Aspect Oriented Programming)稱為面向切面程式設計,在程式開發中主要用來解決一些系統層面上的問題,比如日誌,事務,許可權等待,Struts2的攔截器設計就是基於AOP的思想,是個比較經典的例子。 在不改變原有的邏輯的基礎

    spring boot application properties配置

    ini let encoding odi gap pool nodes gui erp # =================================================================== # COMMON SPRING BOOT

    Spring Boot中使用MyBatis註解配置(1)

    sql type .org 實體 sch 整合 PE 匯總 同傳 之前在Spring Boot中整合MyBatis時,采用了註解的配置方式,相信很多人還是比較喜歡這種優雅的方式的,也收到不少讀者朋友的反饋和問題,主要集中於針對各種場景下註解如何使用,下面就對幾種常見的情況舉

    Spring-boot入門之配置

    1.配置檔案 spring-boot預設有兩種配置檔案 appliation.properties appliation.yml 配置檔案預設放在src/main/resources目錄或者是類路徑/config下 配置檔案的作用:修改sprin

    spring boot配置

    spring boot支援的配置檔案 spring boot支援兩種型別的配置檔案,一種是傳統的預設配置檔案application.properties ,還有一種是現在被廣泛推薦使用的YAML檔案。書寫上properties是採用鍵值對的形式來表示,而YAML是以類似大綱的縮排形式,這

    SpringBoot進擊 | 二淺出:Spring Boot配置

    1.前言 上一節:SpringBoot進擊 | 一淺出:Spring Boot簡單快速上手書 上一篇介紹了 Spring Boot 的入門,在一般情況下,我們不需要做太多的配置就能夠讓 Spring Boot 正常執行。因為其使用“習慣優於配置”(專案中存在大量的配置,此外還內建了一

    Spring Boot(二)配置檔案

    簡介 Spring Boot使用“習慣由於配置”(專案中存在大量預設的配置,而且內建tomcat)的理念,讓你的無需手動進行配置就可以將專案執行起來。使用Spring Boot很容易建立一個獨立執行的、準生產級別的Spring框架的專案。同時,Spring Boot還提供一個全域性配置檔案對一些

    Spring boot 2 -配置

    分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!