Spring Boot Logback應用日誌
日誌對於應用程式來說是非常重要的,Spring框架本身集成了不少其他工具,我們自身的應用也會使用到第三方庫,所以我們推薦在Spring應用中使用SLF4J/Logback來記錄日誌。
SLF4J與Logback簡介
SLF4J——Simple Logging Facade For Java,它是一個針對於各類Java日誌框架的統一Facade抽象。Java日誌框架眾多——常用的有java.util.logging
, log4j
, logback
,commons-logging
,
Spring框架使用的是Jakarta Commons Logging API (JCL)。而SLF4J定義了統一的日誌抽象介面,而真正的日誌實現則是在執行時決定的——它提供了各類日誌框架的binding。
Logback是log4j框架的作者開發的新一代日誌框架,它效率更高、能夠適應諸多的執行環境,同時天然支援SLF4J。
Spring Boot Logging
Spring Boot實現了一套日誌系統——它能夠根據類路徑上的內容來決定使用哪一種日誌框架,logback
是最優先的選擇。配置了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>
這樣就定義了一個<logger>
捕獲org.springframework.web
的日誌,日誌級別是DEBUG
,base.xml
內容如下:
<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}
,當前程序ID${LOG_FILE}
,Spring Boot配置檔案中logging.file
的值${LOG_PATH}
, Spring Boot配置檔案中logging.path
的值
同時預設情況下包含另個appender
——一個是控制檯,一個是檔案,分別定義在console-appender.xml
和file-appender.xml
中。同時對於應用的日誌級別也可以通過application.properties
進行定義:
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
這等價於在logback.xml
配置appender
的日誌級別。
ConsoleAppender
Logback使用appender
來定義日誌輸出,在開發過程中最常用的是將日誌輸出到控制檯:
<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>
<encoder>
表示對日誌進行編碼:
%d{HH:mm:ss.SSS}
——日誌輸出時間%thread
——輸出日誌的程序名字,這在Web應用以及非同步任務處理中很有用%-5level
——日誌級別,並且使用5個字元靠左對齊%logger{36}
——日誌輸出者的名字%msg
——日誌訊息%n
——平臺的換行符
在這種格式下一條日誌的輸出結果如下:
0:12:51.012 [qtp231719230-45] 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
的定義,上例中<FileNamePattern>rest-demo.%d{yyyy-MM-dd}.log</FileNamePattern>
定義了日誌的切分方式——把每一天的日誌歸檔到一個檔案中,<maxHistory>30</maxHistory>
表示只保留最近30天的日誌,以防止日誌填滿整個磁碟空間。同理,可以使用%d{yyyy-MM-dd_HH-mm}
來定義精確到分的日誌切分方式。
Sentry
Sentry是一個統一的日誌跟蹤平臺,在傳統的日誌管理中,都是在伺服器上通過tail
, vim
等工具檢視日誌,並且不同的日誌位置也個不相同,而Sentry則是將這些日誌(主要是錯誤日誌)通過統一的介面收集起來,並且提供跟蹤、管理的功能,使得應用程式的錯誤、Bug能夠即時被解決。
Sentry提供了Java庫——Raven Java,Java應用程式能夠在捕獲異常後將其傳送到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:[email protected]: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>
我們推薦在這個<appender>
中加入<filter>
用於過濾ERROR
級別的日誌。
相關推薦
Spring Boot Logback應用日誌
日誌對於應用程式來說是非常重要的,Spring框架本身集成了不少其他工具,我們自身的應用也會使用到第三方庫,所以我們推薦在Spring應用中使用SLF4J/Logback來記錄日誌。 SLF4J與Logback簡介 SLF4J——Simple Logging Faca
【spring boot logback】日誌彩色渲染
在logback.xml檔案中 修改位置如下: <property name="CONSOLE_LOG_PATTERN" value="%highlight(%date{yyyy-MM-dd HH:mm:ss.SSS}) %boldYell
spring boot logback 多環境列印日誌
spring boot預設使用的是logback列印日誌的,但它也支援log4j log4j2等日誌(這些要調整匯入的jar包了),在專案的application.properties裡面只能簡單的配置一些日誌的相關資訊,如果想要配置複雜的日誌輸出,例如每天按
Spring boot logback日誌輸出多環境配置
本人專案結構如下圖:特備註意logback.xml必須要改成logback-spring.xml,參看https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-cus
Spring boot logback的使用(日誌記錄)
1 在spring boot中已經自動包含了logback的jar包,如果不是spring boot需要在maven中匯入依賴 <!-- https://mvnrepository.com/artifact/ch.qos.logback/logbac
spring boot/cloud 應用監控
alt min .com cnblogs ima target 器監控 斷路器 htm 原文地址:http://www.cnblogs.com/skyblog/p/5633635.html 應用的監控功能,對於分布式系統非常重要。如果把分布式系統比作整個社會系統。那麽各個
基於Spring Boot構建應用開發規範
SpringBoot 項目規範 1.規範的意義和作用 編碼規範可以最大限度的提高團隊開發的合作效率 編碼規範可以盡可能的減少一個軟件的維護成本 , 並且幾乎沒有任何一個軟件,在其整個生命周期中,均由最初的開發人員來維護 編碼規範可以改善軟件的可讀性,可以讓開發人員盡快而徹底地理解新的代碼 規範性編碼
Spring Boot 企業級應用開發實戰
-o .com 註解 ping 折騰 jar 服務 開啟 blog Spring Boot 企業級應用開發實戰【下載地址:https://pan.baidu.com/s/1SbB-auGkUN6r2i6dtv7t_w 】 Spring Boot是目前Spring技術體系中炙
基於spring-boot的應用程序的單元測試方案
supported nsa action throws 接口 insert tomat clas 資料 概述 本文主要介紹如何對基於spring-boot的web應用編寫單元測試、集成測試的代碼。 此類應用的架構圖一般如下所示: 我們項目的程序,對應到上圖中的web應用部
Spring boot-Logback
1、logback簡單介紹 開源,是Log4j的改良版本 Springboot提供了一套日誌系統,lockback是最優選擇 2、結構 logback被分為三個元件:core、classic、access 其中,core提供了Logback的核心功能,另外兩個
spring boot如何整合日誌框架
1.application.yml logging: config: classpath:logback-boot.xml 2.logback-boot.xml配置 <?xml version="1.0" encoding="UTF-8"?> <
Spring boot 4 應用打包部署
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Spring Boot 自定義日誌詳解
本節內容基於 Spring Boot 2.0. 你所需具備的基礎 什麼是 Spring Boot? Spring Boot 核心配置檔案詳解 Spring Boot 開啟的 2 種方式 Spring Boot 自動配置原理、實戰 Spring Boot 2.x 啟動全過程原始碼分析
基於spring-boot的應用程序的單元+集成測試方案
回歸 path turn behavior pat 一個 match 多場景 mybatis框架 概述 本文主要介紹單元測試、集成測試相關的概念、技術實現以及最佳實踐。 本文的demo是基於Java語言,Spring Boot構建的web應用。測試框架使用Junit,模擬框
基於spring-boot的應用程式的單元+整合測試方案
概述 本文主要介紹單元測試、整合測試相關的概念、技術實現以及最佳實踐。 本文的demo是基於Java語言,Spring Boot構建的web應用。測試框架使用Junit,模擬框架使用mockito。 之前曾經總結過一篇文章:基於spring-boot的應用程式的單元測試方案,但是當時只是從技術實現的角度
Spring Boot Web應用開發 CORS 跨域請求設定 Invalid CORS request
使用SpringBoot Web開發程式時,前後端分離時,經常遇到跨域問題,特別是很多情況下Firefox瀏覽器沒有問題,而chrome瀏覽器有問題,僅僅從瀏覽器的web控制檯很難發現有效的錯誤或者告警資訊,因此在開發程式很有必要在開發階段就考慮到並配置好跨域。 SpringBoot
spring boot Tomcat訪問日誌
1.Tomcat設定訪問日誌 1 <Host name="localhost" appBase="webapps" 2 unpackWARs="true" autoDeploy="true"> 3 <!-- 4 <
Spring Boot 啟動應用原理
1.執行run方法 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start();
分享spring boot controller統一日誌程式碼
最近專案需要做一個controller層的aop,主要解決下面問題: 1.controller日誌統一列印輸出json格式,相容json和velocity 。 2.專案異常處理 3.異常郵件傳送 4.頁面訪問統計 主要思路使用aop實現,controller引數統一使用@RequestParam接收
SpringBoot進階篇4:Spring Boot EHCache應用
1、SpringBoot Cache Spring Boot 本身提供了一個基於ConcurrentHashMap 的快取機制,也集成了EhCache2.x、JCache CJSR-107、EhCache3.x、Infinispan ),還有Couchb