1. 程式人生 > >常用logback.xml配置詳解

常用logback.xml配置詳解

選擇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>

解釋:

  1. <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聯絡起來

這是我在專案中碰見的,所以就當做個筆記,如果有用,大家可以看看,沒有用就算了吧