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來訪問日誌的功能。
匯入依賴
<!-- LogBack --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-access</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.3</version> </dependency> <!-- LogBack -->
設定檔位置 logback的設定檔logback.xml檔案預設放在/src/main/resource/檔案夾下,本文放在/config/下
設定檔詳解
<?xml version="1.0" encoding="UTF-8" ?><configuration> <!--定義記錄檔的儲存地址 勿在 LogBack 的配置中使用相對路徑--> <property name="LOG_HOME" value="./log" /> <!-- 日誌首碼名稱 --> <property name="LOG_NAME" value="spider" /> <!-- 控制台輸出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:層級從左顯示5個字元寬度,%logger{50}輸出日誌的類 50代表包名加類名的總長度限制, %msg:日誌訊息,%n是分行符號--> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 按照每天組建記錄檔檔案 --> <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--記錄檔輸出的檔案名稱--> <FileNamePattern>${LOG_HOME}/${LOG_NAME}-%d{yyyy-MM-dd}.log</FileNamePattern> <!--記錄檔保留天數--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:層級從左顯示5個字元寬度,%logger{50}輸出日誌的類 50代表包名加類名的總長度限制, %msg:日誌訊息,%n是分行符號--> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <!--記錄檔最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!--庫日誌輸出層級 --> <root level="DEBUG"> <appender-ref ref="STDOUT" /> <appender-ref ref="ROLLING_FILE" /> </root> </configuration>
使用案例
package clo.info.client;import java.io.IOException;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import ch.qos.logback.core.joran.spi.JoranException;import clo.info.util.LogBackConfigurator;public class LogBackTest {private static Logger logger = LoggerFactory.getLogger(LogBackTest.class);public static void main(String[] args) {initLogger();logger.debug("輸出debug層級的日誌....."); logger.info("輸出info層級的日誌....."); logger.error("輸出error層級的日誌....."); }private static void initLogger() {try {LogBackConfigurator.load("config/logback.xml");} catch (IOException e) {e.printStackTrace();} catch (JoranException e) {e.printStackTrace();}}}
如果是java web工程需要在web.xml中添加
<context-param> <param-name>logbackConfigLocation</param-name> <param-value>config/logback.xml</param-value> </context-param> <listener> <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class> </listener>