Commons Logging和Slf4j是日誌門面(門面模式是軟件工程中經常使用的一種軟件設計模式,也被稱爲正面模式、外觀模式。它爲子系統中的一組接口提供一個統一的高層接 口,使 得子系統更容易使用)。log4j和Logback則是具體的日誌實現方案。能夠簡單的理解爲接口與接口的實現,調用這隻須要關注接口而無需關注具體的實現,作到解耦;
比較經常使用的組合使用方式是Slf4j與Logback組合使用,Commons Logging與Log4j組合使用。java
下面是Slf4j與Logback使用:spring
1 # 日誌目錄 2 logging: 3 path: home/logs/ 4 file: ${logging.path}springboot
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- 日誌級別從低到高分爲TRACE < DEBUG < INFO < WARN < ERROR < FATAL,若是設置爲WARN,則低於WARN的信息都不會輸出 --> 3 <!-- scan:當此屬性設置爲true時,配置文檔若是發生改變,將會被從新加載,默認值爲true --> 4 <!-- scanPeriod:設置監測配置文檔是否有修改的時間間隔,若是沒有給出時間單位,默認單位是毫秒。 5 當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘。 --> 6 <!-- debug:當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false。 --> 7 8 <configuration debug="true"> 9 <!-- name的值是變量的名稱,value的值時變量定義的值。經過定義的值會被插入到logger上下文中。定義後,能夠使「${}」來使用變量。 --> 10 <!--<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>--> 11 <property name="LOG_FILE" value="${LOG_FILE}"/> 12 13 <!--1. 輸出到控制檯--> 14 <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> 15 <encoder> 16 <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} [%line] - %msg%n</pattern> 17 </encoder> 18 </appender> 19 20 <!--2. 輸出到文檔--> 21 <!-- 2.1 level爲 DEBUG 日誌,時間滾動輸出 --> 22 <appender name="R" class="ch.qos.logback.core.rolling.RollingFileAppender"> 23 <!-- 正在記錄的日誌文檔的路徑及文檔名 --> 24 <!--<File>${LOG_FILE}</File>--> 25 <!--日誌文檔輸出格式--> 26 <encoder> 27 <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} [%line] - %msg%n</pattern> 28 </encoder> 29 <!-- 日誌記錄器的滾動策略,按日期,按大小記錄 --> 30 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 31 <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log 32 </fileNamePattern> 33 <maxHistory>15</maxHistory> 34 </rollingPolicy> 35 </appender> 36 37 <logger name="noModule" level="info"/> 38 <logger name="org.codehaus" level="info"/> 39 <logger name="org.apache" level="info"/> 40 <logger name="org.springframework" level="info"/> 41 <logger name="druid.sql" level="info"/> 42 <logger name="com.alibaba" level="debug"> 43 <appender-ref ref="stdout"/> 44 </logger> 45 <logger name="com.springboot" level="debug"/> 46 <root level="info"> 47 <appender-ref ref="stdout"/> 48 <appender-ref ref="R"/> 49 </root> 50 </configuration>
1 (1) public final class InStockController { 2 3 private static final Logger LOGGER = LoggerFactory.getLogger(InStockController.class); 4 } 5 6 7 8 (2) 方法中 9 LOGGER.info("xxxxxxxx");