1、前言
查了很多資料,都說logback的性能都要比log4j的性能要好,logback逐漸要取代log4j。今天對logback作一個簡單的整理。
2、loback的坐標依賴
<!-- <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.4</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.0.6</version> </dependency> --> <!-- 該依賴包括了上面兩個依賴,所以只要引入該依賴即可 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.0.6</version> </dependency>
3、配置文件:logback.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration xmlns="http://ch.qos.logback/xml/ns/logback" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ch.qos.logback/xml/ns/logback https://raw.githubusercontent.com/enricopulatzo/logback-XSD/master/src/main/xsd/logback.xsd"> <property name="LOG_HOME" value="tp/log"/> <!-- 輸出到控制台 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender" > <!-- 輸出的格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}: %msg%n</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 配置滾動的策略 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 日志名稱的格式 --> <fileNamePattern>${LOG_HOME}/logback.log.%d{yyyy-MM-dd}</fileNamePattern> <!-- 保存的最長時間:天數 --> <MaxHistory>1</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}: %msg%n</pattern> </encoder> </appender> <!-- 注意: level屬性也可以直接寫在logger上,如: <logger name="ws.log.logback.LogbackTest" additivity="false" level="INFO"> <appender-ref ref="STDOUT" /> </logger> --> <logger name="ws.log.logback.LogbackTest" additivity="false"> <level value="INFO" /> <appender-ref ref="STDOUT" /> </logger> <!-- 相當於logger元素,只是name值已經確定為root了 --> <root level="warn"> <appender-ref ref="STDOUT" /> </root> </configuration>
4、代碼實例:
//注意導入的包都是slf4j的包 import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LogbackTest { private static final Logger LOGGER = LoggerFactory.getLogger(LogbackTest.class); public static void main(String[] args) { LOGGER.trace("logback的--trace日志--輸出了"); LOGGER.debug("logback的--debug日志--輸出了"); LOGGER.info("logback的--info日志--輸出了"); LOGGER.warn("logback的--warn日志--輸出了"); LOGGER.error("logback的--error日志--輸出了"); } }
5、效果展示
按照logger指定的輸出級別輸出,會覆蓋root指定的級別。
6、注意:
loger和logger的問題,通過查詢文檔。才了解logback中是沒有loger元素的。我被技術博客誤導了。其實在測試時候已經出現錯誤日志了,如最后一張圖紫紅區域,是當時疏忽了。筆者已經更改。為了方便可以在xml中配置名稱空間,就會有相應的提示,就不會這樣的錯誤。如果不配置,會提示用過的標簽,不管對錯都會提示。這樣會產生誤區。名稱空間可以參考該博客的logback.xml配置。
參考資料:
技術博客:http://www.cnblogs.com/warking/p/5710303.html 【該技術博客中的loger就是指logger】
官網:https://logback.qos.ch/manual/configuration.html
譯文:https://www.oschina.net/translate/logging-in-java-switching-to-logback