選擇logback的理由
logback與log4j的簡單對比一下:
1.首先,對於同樣的代碼路徑,logback使用起來更快。
2.logback原生實現了log4j的api,而log4j中間還需要一個轉換層。
3.有更豐富的文檔,支持xml的和group的配置。
4.對配置文件的在項目啟動中,可以熱加載。
5.可以自動對日志進行歸檔,可以對日志進行歸檔,可以自動壓縮日志成為歸檔文件。
6.支持更多的過濾器和參數化輸出。
操作
1.引入依賴xml
<!-- logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.22</version>
</dependency>
2.創建logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
<!--日志輸入到控制台-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!--<appender name="permission" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--<file>${catalina.home}/logs/permission.log</file>-->
<!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
<!--<FileNamePattern>${catalina.home}/logs/permission.%d{yyyy-MM-dd}.log.gz</FileNamePattern>-->
<!--</rollingPolicy>-->
<!--<layout class="ch.qos.logback.classic.PatternLayout">-->
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>-->
<!--</layout>-->
<!--</appender>-->
<!---->
<!--<logger name="xxx" level="INFO">-->
<!--<appender-ref ref="permission"/>-->
<!--</logger>-->
<!-- TRACE < DEBUG < INFO < WARN < ERROR -->
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
注:
由configuration里面定義參數:scan、scanPeriod等
1.scan="true" 配置文件發生改變時會重新加載。
2.scanPeriod設置時間間隔,當為scan="true"時才會生效 。
例如:scanPeriod="60 seconds"
3.appender:日志輸出形式,可以定義多個 。
STDOURT :標准化輸出 class="ch.qos.logback.core.ConsoleAppender" :控制台輸出
標准日志格式輸出:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
解釋:
%d{yyyy-MM-dd HH:mm:ss.SSS}:時間
[%thread]:進程
%-5level:級別從做顯示5個寬度
%logger:日志名稱
%msg%:具體的msg
自定義名字和路徑記錄日志:
<appender name="permission" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.home}/logs/permission.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${catalina.home}/logs/permission.%d{yyyy-MM-dd}.log.gz</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</layout>
</appender>
解釋:
<file>${catalina.home}/logs/permission.log</file>代表路徑在Catalina.home的文件夾下面的logs文件夾下面打印出日志permission.log的日志。
2.其他的與上面相似
4.logger:日志,可以是類名,也可以是其他、名稱,最后返回appender輸出。
5.root:只能有一個,日志的級別:從小到大的排序:TRACE < DEBUG < INFO < WARN < ERROR
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
與appender聯系起來
