Logback框架
步驟一:
引入使用logback需要的3個依賴,需要注意使用logback是需要引入slf4j-api的,因為logback是基于slf4j的。
<!--logback-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
步驟二:
在classpath(或者config)下創(chuàng)建logback.xml文件,并按需要進行相應的配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 【日志級別】trace<debug<info<warn<error 若定義的日志級別為info,則不會打印出 trace和debug的相關日志。-->
<!-- 定義全局參數常量 -->
<property name="log.level" value="debug"/>
<property name="log.maxHistory" value="30"/><!-- 30表示30個 -->
<!-- 日志的存放位置 --> <!--catalina.base表示tomcat的根路徑 -->
<property name="log.filePath" value="${catalina.base}/logs/webapps"/>
<!-- 日志的展現(xiàn)格式 -->
<property name="log.pattern" value="%d{yyyy-MM-dd : HH:mm:ss.SSS}[%thread]%-5level%logger{50}-%msg%n"/>
<!-- 定義appender (日志的輸出和存放位置等). -->
<!-- 控制臺設置 -->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern> <!-- 控制臺日志輸出格式 -->
</encoder>
</appender>
<!-- DEBUG -->
<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件會滾動 -->
<!-- 文件路徑 -->
<file>${log.filePath}/debug.log</file><!-- 當前的日志文件存放路徑 -->
<!-- 日志滾動策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 歷史日志文件的存放路徑和名稱 -->
<fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- 日志文件最大的保存歷史 數量-->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern> <!-- 日志文件中日志的格式 -->
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch> <!-- 用過濾器,只接受DEBUG級別的日志信息,其余全部過濾掉 -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- INFO -->
<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件會滾動 -->
<!-- 文件路徑 -->
<file>${log.filePath}/info.log</file><!-- 當前的日志文件存放路徑 -->
<!-- 日志滾動策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 歷史日志文件的存放路徑和名稱 -->
<fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- 日志文件最大的保存歷史 數量-->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern> <!-- 日志文件中日志的格式 -->
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch> <!-- 用過濾器,只接受INFO級別的日志信息,其余全部過濾掉 -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- ERROR-->
<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 日志文件會滾動 -->
<!-- 文件路徑 -->
<file>${log.filePath}/error.log</file><!-- 當前的日志文件存放路徑 -->
<!-- 日志滾動策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- TimeBased默認是一天更新一次 -->
<!-- 歷史日志文件的存放路徑和名稱 -->
<fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- 日志文件最大的保存歷史 數量-->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern> <!-- 日志文件中日志的格式 -->
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch> <!-- 用過濾器,只接受ERROR級別的日志信息,其余全部過濾掉 -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- logger標簽用于和appender進行綁定,并告訴logback哪些包(name屬性)的日志信息需要記錄 -->
<!--logger將會繼承root標簽,在加上additivity="true"的屬性后 root標簽中的level將會被logger的level覆蓋-->
<logger name="com.me" level="${log.level}" additivity="true">
<!-- level表示只記錄哪一個級別以上的日志 -->
<!-- 與appender進行綁定 -->
<appender-ref ref="debugAppender"/>
<appender-ref ref="infoAppender"/>
<appender-ref ref="errorAppender"/>
</logger>
<root level="info">
<appender-ref ref="consoleAppender"/>
</root>
</configuration>
注意:若日志路徑可配置則如下操作
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="appName" value="XXX" />
<property name="module_all" value="all" />
<property name="info" value="info" />
<property file="application.properties"/>
<springProperty scope="context" name="LOG_HOME" source="logback.loghome"/>
<!-- 標準控制臺輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%thread] %logger{36} %5level >%msg%n</pattern>
</encoder>ExecutorService
</appender>
<!-- INFO -->
<appender name="AllMsgFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${appName}.${module_all}.%d{yyyyMMdd}.info.%i.log</fileNamePattern>