日積月累之Logback框架
Logback引入
Logback主要分為三個模組:
- logback-core :其它兩個模組的基礎模組
- logback-classic :它是log4j的一個改良版本,同時它完整實現了slf4j API
- logback-access :訪問模組與Servlet容器整合提供通過Http來訪問日誌的功能
maven新增依賴:
<!--slf4j 日誌門面-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.26</version>
</dependency>
<!--logback 日誌實現-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
案例:
public class LogbackTest {
public static final Logger LOGGER = LoggerFactory.getLogger(LogbackTest.class);
// 快速入門
@Test
public void testQuick() throws Exception {
for (int i = 0; i < 10000; i++) {
// 日誌輸出
LOGGER.error("error");
LOGGER.warn("wring");
LOGGER.info("info");
LOGGER.debug("debug");// 預設級別
LOGGER.trace("trace");
}
}
}
logback元件之間的關係:
- Logger:日誌的記錄器,把它關聯到應用的對應的context上後,主要用於存放日誌物件,也
可以定義日誌型別、級別。 - Appender:用於指定日誌輸出的目的地,目的地可以是控制檯、檔案、資料庫等等。
- Layout:負責把事件轉換成字串,格式化的日誌資訊的輸出。在logback中Layout物件被封
裝在encoder中。
Appender: 設定日誌資訊的去向,常用的有以下幾個
ch.qos.logback.core.ConsoleAppender (控制檯)
ch.qos.logback.core.rolling.RollingFileAppender (檔案大小到達指定尺寸的時候產生一個新檔案)
ch.qos.logback.core.FileAppender (檔案)
自定義logger物件:
用來設定某一個包或者具體的某一個類的日誌列印級別、以及指定。
僅有一個name屬性,一個可選的level和一個可選的addtivity屬性
name:
用來指定受此logger約束的某一個包或者具體的某一個類。
level:
用來設定列印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和OFF, 如果未設定此屬性,那麼當前logger將會繼承上級的級別。
additivity:
是否向上級loger傳遞列印資訊。預設是true。
可以包含零個或多個元素,標識這個appender將會新增到這個logger
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--
配置集中管理屬性
我們可以直接改屬性的 value 值
格式:${name}
-->
<property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n">
<!--
日誌輸出格式:
%-5level
%d{yyyy-MM-dd HH:mm:ss.SSS}日期
%c類的完整名稱
%M為method
%L為行號
%thread執行緒名稱
%m或者%msg為資訊
%n換行
-->
</property>
<!--定義日誌檔案儲存路徑屬性-->
<property name="log_dir" value="/logs"></property>
<!--控制檯日誌輸出的 appender-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--控制輸出流物件 預設 System.out 改為 System.err-->
<target>System.err</target>
<!--日誌訊息格式配置-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
</appender>
<!--日誌檔案輸出的 appender-->
<appender name="file" class="ch.qos.logback.core.FileAppender">
<!--日誌檔案儲存路徑-->
<file>${log_dir}/logback.log</file>
<!--日誌訊息格式配置-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
</appender>
<!--html 格式日誌檔案輸出 appender-->
<appender name="htmlFile" class="ch.qos.logback.core.FileAppender">
<!--日誌檔案儲存路徑-->
<file>${log_dir}/logback.html</file>
<!--html 訊息格式配置-->
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%-5level%d{yyyy-MM-dd HH:mm:ss.SSS}%c%M%L%thread%m</pattern>
</layout>
</encoder>
</appender>
<!--日誌拆分和歸檔壓縮的 appender 物件-->
<appender name="rollFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日誌檔案儲存路徑-->
<file>${log_dir}/roll_logback.log</file>
<!--html 訊息格式配置-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
<!--指定拆分規則-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--按照時間和壓縮格式宣告拆分的檔名-->
<fileNamePattern>${log_dir}/rolling.%d{yyyy-MM-dd}.log%i.gz</fileNamePattern>
<!--按照檔案大小拆分-->
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
<!--日誌級別過濾器-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!--日誌過濾規則-->
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--非同步日誌-->
<appender name="async" class="ch.qos.logback.classic.AsyncAppender">
<!--指定某個具體的 appender-->
<appender-ref ref="rollFile"/>
</appender>
<!--
也是<logger>元素,但是它是根logger。預設debug
level:用來設定列印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL
和 OFF,
<root>可以包含零個或多個<appender-ref>元素,標識這個appender將會新增到這個
logger。
-->
<root level = "All">
<appender-ref ref="console"/>
<!--<appender-ref ref="file"/>-->
<!-- <appender-ref ref="htmlFile" />-->
<!-- <appender-ref ref="async"/>-->
</root>
<!--自定義 logger 物件
additivity="false" 自定義 logger 物件是否繼承 rootLogger
如果additivity="true",Logger就會列印root標籤中的日誌,如果additivity="false",不會執行root標籤中的日誌
-->
<logger name="com.banbeitai" level="info" additivity="true">
<appender-ref ref="console"/>
</logger>
</configuration>
輸出效果:
網頁輸出形式:
檔案輸出形式:
相關文章
- 8月21日至8月27日技術積累
- 快取框架積累快取框架
- 日積月累-計算機英語詞彙(持續更新)計算機
- Java基礎知識日積月累(Tip of the Day20)Java
- Java 日誌框架 LogbackJava框架
- 給應用程式新增“日積月累”對話方塊 (轉)
- 微軟八月累積更新發布,修補DogWalk零日漏洞微軟
- 日積月累成大神《花千骨》手遊每日必做任務
- Java日誌框架:logback詳解Java框架
- postfix配置積累(不斷的積累)
- 記憶體安全週報|1019日積月累,篤學不倦記憶體
- Oracle積累Oracle
- 網際網路金融專案——工作日誌(一)之點滴積累
- 網際網路金融專案——工作日誌(二)之點滴積累
- vue 個人積累Vue
- lunix 命令積累
- 日期操作積累
- linux 積累Linux
- Springboot 整合logback 日誌框架簡介Spring Boot框架
- 機器學習數學知識積累之概率論機器學習
- 微軟9月累積更新,修復66個CVE漏洞微軟
- 工作點滴積累
- 日常知識積累
- 機器學習知識積累機器學習
- java問題積累Java
- javascript程式碼積累JavaScript
- LINUX命令積累Linux
- 正則命令積累
- 日常技術積累
- js積累函式JS函式
- 微軟推送Win10 Mobile 4月份累積更新微軟Win10
- 機器學習數學知識積累之數理統計機器學習
- 微軟7月累積更新來了!修復13個高危漏洞微軟
- 微軟10月累積更新,修復4個0day漏洞微軟
- vue 個人積累(元件,工具)Vue元件
- 常用前端知識積累前端
- MySQL知識-積累篇MySql
- 併發總結累積