日誌+logback-spring.xml配置詳解

常用日誌框架

在這裏插入圖片描述

日誌庫適配器:老工程直接使用日誌api打印的日誌,如果需要改成標準的門面模式(例如slf4j+logback組合),這就需要日誌庫適配器來完成從舊日誌庫的api到slf4j的路由,這樣在不改動原來代碼的情況下也能使用slf4j統一管理日誌。

日誌門面:提供一套標準的日誌記錄接口。

日誌門面適配器:slf4j出現之前的日誌框架(如log4j)沒有實現slf4j接口,要使用這套規範(slf4j+log4j),需要使用日誌門面適配器(slf4j-log4j12)來解決兼容性問題。

日誌庫(具體實現):日誌具體的實現。

slf4j+logback

<dependency>
<groupid>org.slf4</ groupid>
<artifactid>slf4j-api</artifactid>
</dependency>
<dependency>
<groupid>ch.qos.logback</groupid>
<artifactid>logback-classic</artifactid>
</dependency>
<dependency>
<groupid>ch.qos.logback</groupid>
<artifactid>logback-core</artifactid>
</dependency>

slf4j+log4j

<dependency>
<groupid>org.slf4</ groupid>
<artifactid>slf4j-api</artifactid>
</dependency>
<dependency>
<groupid>org.slf4</ groupid>
<artifactid>slf4j-log4j12</artifactid>
</dependency>
<dependency>
<groupid>log4j</ groupid>
<artifactid>log4j</artifactid>
</dependency>

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  
    <!-- 定義參數,後面可以通過${logPath}使用 -->
    <property name="logPath" value="./log"/>
    <!-- 讀取spring屬性文件變量 source爲spring變量-->
    <!--<springProperty scope="context" name="logPath" source="log.path"/>->
  
    <!-- 控制檯輸出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 每天輸出一個文件 INFO -->
    <appender name="INFO"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logPath}/info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/info.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <MaxFileSize>50MB</MaxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 每天輸出一個文件 ERROR -->
    <appender name="ERROR"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logPath}/error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logPath}/error.%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <MaxFileSize>50MB</MaxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <!-- 日誌級別 -->
    <root level="info">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="INFO" />
        <appender-ref ref="ERROR" />
    </root>
    
    <!-- 設置具體的日誌級別 additivity="false",因爲在root設置了ERROR的級別,爲false表示不使用父的 -->
    <logger name="errorLog" level="error" additivity="false">
        <appender-ref ref="ERROR" />
    </logger>

</configuration>

log4j.properties

#設置Logger輸出級別和輸出目的地
log4j.rootLogger=debug,stdout,logfile,info,error
#表示Logger不會在父Logger的appender裏輸出,默認爲true
log4j.additivity.org.apache=false

#把日誌信息輸出到控制檯
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#日誌輸出格式
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.appender.stdout.layout.ConversionPattern=%d%I%m%n

#每天產生一個日誌文件 info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.info.Encoding=GBK
log4j.appender.info.DatePattern='.'yyyy-MM-dd
log4j.appender.info.File=logs/project-name/info.log
log4j.appender.info.Threshold = INFO  

#每天產生一個日誌文件 error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern==%d [%t] %-5p %c - %m%n
log4j.appender.error.Encoding=GBK
log4j.appender.error.DatePattern='.'yyyy-MM-dd
log4j.appender.error.File=logs/project-name/error.log
log4j.appender.error.Threshold = ERROR 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章