slf4j:(Simple Logging Facade for Java,簡單日誌門面),它不是具體的日誌解決方案,只服務於各類各樣的日誌系統。在使用SLF4J的時候,不須要再代碼中或配置文件中指定使用的那個具體的日誌系統。api
logback:是由log4j創始人設計的一個開源日誌組件。logback當前分紅三個模塊:logback-core,logback-classic和logback-access。logback-core是其餘兩個模塊的基礎。logback-classic是log4j的一個改良版本。app
使用步驟:spa
一、引入slf4j以及logback依賴debug
1 <dependencies> 2 <dependency> 3 <groupId>org.slf4j</groupId> 4 <artifactId>slf4j-api</artifactId> 5 <version>1.7.22</version> 6 </dependency> 7 <dependency> 8 <groupId>ch.qos.logback</groupId> 9 <artifactId>logback-classic</artifactId> 10 <version>1.1.6</version> 11 </dependency> 12 </dependencies>
二、classpath中編寫logback的配置文件logback.xml,將logback.xml文件放在/src/main/resources/路徑中設計
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- scan:當此屬性設置爲true時,配置文件若是發生改變,將會被從新加載,默認值爲true。 3 scanPeriod:設置監測配置文件是否有修改的時間間隔,若是沒有給出時間單位,默認單位是毫秒。當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘。 4 debug:當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false。 --> 5 <configuration scan="true" scanPeriod="60 seconds" debug="false"> 6 7 <!-- 上下文變量設置,用來定義變量值,其中name的值是變量的名稱,value的值時變量定義的值。 8 經過<property>定義的值會被插入到logger上下文中。定義變量後,能夠使「${}」來使用變量。 --> 9 <property name="CONTEXT_NAME" value="logback-test" /> 10 11 <!-- 上下文名稱:<contextName>, 每一個logger都關聯到logger上下文, 12 默認上下文名稱爲「default」。但能夠使用<contextName>設置成其餘名字,用於區分不一樣應用程序的記錄。 13 一旦設置,不能修改。 --> 14 <contextName>${CONTEXT_NAME}</contextName> 15 16 <!-- <appender>是<configuration>的子節點,是負責寫日誌的組件。 17 有兩個必要屬性name和class。 18 name指定appender名稱, 19 class指定appender的實現類。 --> 20 <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> 21 <!-- 對日誌進行格式化。 --> 22 <encoder> 23 <pattern> 24 %d{yyyy-MM-dd HH:mm:ss.SSS}|%level|%class|%thread|%method|%line|%msg%n 25 </pattern> 26 </encoder> 27 </appender> 28 29 <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> 30 <!-- 被寫入的文件名,能夠是相對目錄,也能夠是絕對目錄,若是上級目錄不存在會自動建立,沒有默認值。 --> 31 <file>${logs.dir}/logback-test.log</file> 32 33 <!-- 當發生滾動時的行爲 --> 34 <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 35 <!-- 必須包含「%i」例如,假設最小值和最大值分別爲1和2,命名模式爲 mylog%i.log,會產生歸檔文件mylog1.log和mylog2.log。還能夠指定文件壓縮選項,例如,mylog%i.log.gz 或者 沒有log%i.log.zip --> 36 <FileNamePattern>${logs.dir}/logback-test.%i.log</FileNamePattern> 37 <!-- 窗口索引最小值 --> 38 <minIndex>1</minIndex> 39 <!-- 窗口索引最大值 --> 40 <maxIndex>1</maxIndex> 41 </rollingPolicy> 42 43 <!-- 激活滾動的條件。 --> 44 <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 45 <!-- 活動文件的大小,默認值是10MB --> 46 <maxFileSize>30MB</maxFileSize> 47 </triggeringPolicy> 48 49 <!-- 對記錄事件進行格式化。 --> 50 <encoder> 51 <charset>UTF-8</charset> 52 <Pattern> 53 %d{yyyy-MM-dd HH:mm:ss.SSS}|%level|%class|%thread|%method|%line|%msg%n 54 </Pattern> 55 </encoder> 56 </appender> 57 58 <!-- 特殊的<logger>元素,是根logger。只有一個level屬性,應爲已經被命名爲"root". 59 level:設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設置爲INHERITED或者同義詞NULL。默認是DEBUG。 60 <root>能夠包含零個或多個<appender-ref>元素,標識這個appender將會添加到這個loger。 --> 61 <root> 62 <level value="WARN" /> 63 <appender-ref ref="stdout" /> 64 <appender-ref ref="file" /> 65 </root> 66 67 <!-- 用來設置某一個 包 或者具體的某一個 類 的日誌打印級別、以及指定<appender>, 68 name:用來指定受此logger約束的某一個包或者具體的某一個類。 69 level:用來設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,還有一個特俗值INHERITED或者同義詞NULL,表明強制執行上級的級別。若是未設置此屬性,那麼當前loger將會繼承上級的級別。 70 additivity:是否向上級logger傳遞打印信息。默認是true。(這個logger的上級就是上面的root) 71 <logger>能夠包含零個或多個<appender-ref>元素,標識這個appender將會添加到這個logger。--> 72 <logger name="xuyihao.logback.test" level="DEBUG" additivity="true"></logger> 73 74 </configuration>