SpringBoot+logback實現日誌打印

logback介紹

logback是一款開源的日誌框架,內核重寫了,是基於log4j基礎進行改良的。其官網爲logback.qos.ch。logback在性能上有很大提高,擁有更多特性。html

logback-core:是其它兩個模塊的基礎模塊java

logback-classic:log4j的改良版本,實現了Slf4j APIweb

logback-access:集成Servle環境時就須要logback了,能夠提供Http訪問的接口spring

日誌級別

日誌級別:ERROR, WARN, INFO, DEBUG or TRACE
有時候咱們要獲取更多的日誌信息,就能夠下降日誌級別,而後或是更多的日誌信息,eg:目前級別是info級別的,咱們能夠下降日誌級別爲debug,而後獲取更多日誌信息。sql

項目集成

maven加上對應的jar:apache

<!-- logback -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>

在application.yml加上配置mybatis

server:
  port: 8081
logging:
  config: classpath:logback.xml
  level:
    com.muses.taoshop: debug
  path: /data/logs

在資源文件夾下添加logback.xml:app

<?xml version="1.0" encoding="UTF-8" ?>
<configuration debug="false" scan="true">
    <!-- 日誌級別 -->
    <springProperty scope="context" name="LOG_ROOT_LEVEL" source="logging.level.root" defaultValue="DEBUG"/>
    <!--  標識這個"STDOUT" 將會添加到這個logger -->
    <springProperty scope="context" name="STDOUT" source="log.stdout" defaultValue="STDOUT"/>
    <!-- 日誌格式,%d:日期;%thread:線程名;%-5level:日誌級別從左顯示5個字符長度,列如:DEBUG;
        %logger{36}:java類名,例如:com.muses.taoshop.MyTest,36表示字符長度;%msg:日誌內容;%d:換行 -->
    <property name="LOG_PATTERN"
              value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
    <!-- root日誌級別-->
    <property name="${LOG_ROOT_LEVEL}" value="DEBUG" />
    <!-- 日誌跟目錄 -->
    <property name="LOG_HOME" value="data/logs" />
    <!-- 日誌文件路徑-->
    <property name="LOG_DIR" value="${LOG_HOME}/%d{yyyyMMdd}" />
    <!-- 日誌文件名稱 -->
    <property name="LOG_PREFIX" value="portal" />
    <!-- 日誌文件編碼 -->
    <property name="LOG_CHARSET" value="utf-8" />
    <!-- 配置日誌的滾動時間,保存時間爲15天-->
    <property name="MAX_HISTORY" value="15" />
    <!-- 文件大小,默認爲10MB-->
    <property name="MAX_FILE_SIZE" value="10" />


    <!-- 打印到控制檯 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 格式化日誌內容-->
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!-- 打印全部日誌,保存到文件-->
    <appender name="FILE_ALL"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/all_${LOG_PREFIX}.log</file>
        <!-- 設置滾動策略,當日志文件大小超過${MAX_FILE_SIZE}時,新的日誌內容寫到新的日誌文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 新的日誌文件路徑名稱,%d:日期 %i:i是變量 -->
            <fileNamePattern>${LOG_DIR}/all_${LOG_PREFIX}%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 保存日誌15天 -->
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 日誌文件的最大大小 -->
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 格式日誌文件內容-->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${LOG_PATTERN}</pattern>
        </layout>
    </appender>

    <!-- 打印錯誤日誌,保存到文件-->
    <appender name="FILE_ERR"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/err_${LOG_PREFIX}.log</file>
        <!-- 設置滾動策略,當日志文件大小超過${MAX_FILE_SIZE}時,新的日誌內容寫到新的日誌文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 新的日誌文件路徑名稱,%d:日期 %i:i是變量 -->
            <fileNamePattern>${LOG_DIR}/err_${LOG_PREFIX}%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 保存日誌15天 -->
            <maxHistory>${MAX_HISTORY}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 日誌文件的最大大小 -->
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 格式日誌文件內容-->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${LOG_PATTERN}</pattern>
        </layout>
    </appender>

    <!-- rest template logger-->
    <!--<logger name="org.springframework.web.client.RestTemplate" level="DEBUG" />-->
    <!--<logger name="org.springframework" level="DEBUG" />-->

    <!-- jdbc-->
    <!--<logger name="jdbc.sqltiming" level="DEBUG" />-->
    <logger name="org.mybatis" level="DEBUG" />

    <!-- zookeeper-->
    <logger name="org.apache.zookeeper"    level="ERROR"  />

    <!-- dubbo -->
    <logger name="com.alibaba.dubbo.monitor" level="ERROR"/>
    <logger name="com.alibaba.dubbo.remoting" level="ERROR" />

    <!-- 日誌輸出級別 -->
    <root leve="${LOG_ROOT_LEVEL}">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE_ALL" />
        <appender-ref ref="FILE_ERR" />
    </root>

</configuration>

附錄

參考資料框架

logback的使用和logback.xml詳解maven

Spring Boot 中使用 LogBack 配置

相關文章
相關標籤/搜索