Logback是由log4j創始人設計的又一個開源日誌組件。logback當前分紅三個模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個模塊的基礎模塊。logback-classic是log4j的一個 改良版本。此外logback-classic完整實現SLF4J API使你能夠很方便地更換成其它日誌系統如log4j或JDK14 Logging。logback-access訪問模塊與Servlet容器集成提供經過Http來訪問日誌的功能。html
關於這塊的配置說明,我就簡單的列舉一些比較經常使用配置來進行說明。若是還想了解更多,請看官方的文檔說明。java
簡單的層級結構,實際有更多,僅供參考。api
configuration root logger property appender layout rollingPolicy Pattern fileNamePattern maxFileSize maxHistory totalSizeCap
那麼咱們要使用這個的話,能夠進行以下配置:app
<configuration scan="true" scanPeriod="30 seconds" debug="true"> ... </configuration>
說明:root 指定的日誌級別就是用類進行輸出的日誌,例如:maven
private static Logger LOG = LoggerFactory.getLogger(logbackTest.class);
logger 指定的日誌級別是自定義的級別,例如:測試
private static Logger LOG2 = LoggerFactory.getLogger("oneInfo");
他們的用法以下:線程
<logger name="oneInfo" level="DEBUG" additivity="false"> <appender-ref ref="ONE_INFO" /> </logger> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE" /> </root>
說明二: level 是日誌輸出的級別,additivity表示是否在控制檯打印該日誌。debug
用法以下:設計
<property name="LOG_HOME" value="logs/pcm"/>
說明:value指定的文件路徑,會在項目同級目錄下自動生成,無需手動建立。日誌
這個很是重要,也能夠說是logback的核心吧。簡單的用法以下:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> </appender>
說明:定義一個STDOUT名稱,在控制檯進行輸出。
簡單的用法以下:
<layout class="ch.qos.logback.classic.PatternLayout"> <Pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n </Pattern> </layout>
說明:Pattern裏面格式的%d表示輸出的時間格式,%thread 表示輸出的線程名稱,%-5level 表示字符寬度,%msg 表示輸出的信息,%n表示換行。
簡單的用法以下:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern> <maxFileSize>10MB</maxFileSize> <maxHistory>31</maxHistory> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> </appender>
說明:這段的配置意義是,天天產生一個日誌文件,若是超出了10M,日誌就進行切割,而且在日誌文件名稱上加一,日誌文件最多保持31天,日誌文件總共最大爲10G。
在對logback日誌的配置文件進行了簡單的說明以後,那咱們來簡單的使用logback吧。
logback.xml 使用須要依賴三個 jar 包,分別是 slf4j-api,logback-core,logback-classic。
mavan配置以下:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency>
成功在maven添加依賴包以後,咱們寫個簡單的demo來測試下吧。
定義三個log日誌,一個主log,兩個自定義log。
總體配置以下:
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="30 seconds" debug="true"> <property name="LOG_HOME" value="logs/pcm"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n </Pattern> </layout> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern> <maxFileSize>10MB</maxFileSize> <maxHistory>31</maxHistory> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n </Pattern> </layout> </appender> <appender name="ONE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${LOG_HOME}/oneInfo/%d{yyyy-MM-dd}/oneInfo.%i.txt</fileNamePattern> <maxFileSize>10MB</maxFileSize> <maxHistory>31</maxHistory> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n </Pattern> </layout> </appender> <appender name="TWO_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${LOG_HOME}/twoInfo/%d{yyyy-MM-dd}/twoInfo.%i.txt</fileNamePattern> <maxFileSize>10MB</maxFileSize> <maxHistory>31</maxHistory> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level - %msg%n </Pattern> </layout> </appender> <logger name="oneInfo" level="DEBUG" additivity="false"> <appender-ref ref="ONE_INFO" /> </logger> <logger name="twoInfo" level="WARN" additivity="true"> <appender-ref ref="TWO_INFO" /> </logger> <root level="INFO"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE" /> </root> </configuration>
而後分別在控制檯輸出和文件中進行輸出。
該java的代碼示例以下:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * Title: logbackTest * Description: * logback日誌測試 * Version:1.0.0 * @author pancm * @date 2018年1月24日 */ public class logbackTest { private static Logger LOG = LoggerFactory.getLogger(logbackTest.class); private static Logger LOG2 = LoggerFactory.getLogger("oneInfo"); private static Logger LOG3 = LoggerFactory.getLogger("twoInfo"); public static void main(String[] args) { test(); } private static void test(){ LOG.debug("主程序的debug"); LOG.info("主程序的info"); LOG.warn("主程序的warn"); LOG.error("主程序的error"); LOG2.debug("oneInfo的debug"); LOG2.info("oneInfo的info"); LOG2.warn("oneInfo的warn"); LOG2.error("oneInfo的error"); LOG3.debug("twoInfo的debug"); LOG3.info("twoInfo的info"); LOG3.warn("twoInfo的warn"); LOG3.error("twoInfo的error"); }
輸出結果以下:
日誌的生成目錄:
輸出結果的說明:
參考:
https://logback.qos.ch/documentation.html
https://www.cnblogs.com/warking/p/5710303.html
到此,本文的logback日誌簡單講解結束,謝謝閱讀!