spring boot 使用logback

spring boot自帶logback的jar包,並且在application.properties裏,並不須要任何logback配置相關的東西,只須要把如下xml放到和application.properties同個路徑下,並命名爲logback-spring.xml,spring boot會自動加載它讓它生效,而後再使用就很簡單了。
<configuration scan="true" scanPeriod="10 seconds">
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <property name="LOG_PATH" value="E://logs" /><!-- 這裏指定日誌保存到哪一個文件夾裏去,聽說要指定絕對路徑 -->
    
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 表示這個appender只記錄info級別的日誌 -->
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <File>${LOG_PATH}/info/info.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/info/info-%d{yyyyMMdd}-%i.log.zip</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>1MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>180</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
            </Pattern>
        </layout>
    </appender>

    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <File>${LOG_PATH}/error/error.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!--  ${LOG_PATH}/error/error-%d{yyyy-MM-dd_HH-mm}.log.zip-->
            <fileNamePattern>${LOG_PATH}/error/error-%d{yyyy-MM-dd}-%i.log.zip<!-- 這裏後綴只要帶了.zip就會自動把滿了的日誌壓縮成zip包 -->
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>1MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>180</maxHistory>
            <!-- 取決於上面的fileNamePattern的%d後面的大括號裏是什麼,若是是到分鐘(如:{yyyy-MM-dd_HH-mm}),那就只會保留近maxHistory分鐘的日誌,這個並不徹底準確-->
            <!-- 只能說大概,由於也有可能保存了超過maxHistory分鐘一些的日誌 -->
            <!-- 而若是是面的fileNamePattern的%d後面的大括號裏是以天的形式命名(如:{yyyy-MM-dd}),那就會保留maxHistory天的日誌,寫成30的話就一個月,180的話不就半年咯? -->
        </rollingPolicy>
        <append>true</append>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
            </Pattern>
        </layout>
    </appender>
    
    <!-- hibernate日誌輸入 -->
    <!-- <logger name="org.hibernate.type.descriptor.sql.BasicBinder"
        level="TRACE" />
    <logger name="org.hibernate.type.descriptor.sql.BasicExtractor"
        level="TRACE" />
    <logger name="org.hibernate.SQL" level="INFO" />
    <logger name="org.hibernate.engine.QueryParameters" level="INFO" />
    <logger name="org.hibernate.engine.query.HQLQueryPlan" level="INFO" /> -->

    <root level="WARN"><!-- 這裏寫的WARN,至關於隻日志代碼裏只有Warn及以上的纔會生效 -->
        <appender-ref ref="INFO_FILE" /><!-- 可是一旦有有效的日誌代碼的話,除非這個appender裏面還定義了filter,要否則的話會分別記錄到下面的appender裏去 -->
        <appender-ref ref="ERROR_FILE" />
    </root>    
</configuration>

 使用:spring

隨便在哪一個類裏:sql

private final static Logger logger = LoggerFactory.getLogger(XXX.class);

而後就能夠在方法體裏使用了:app

logger.info("這是一個info級別的日誌");
相關文章
相關標籤/搜索