springboot-logging


1、springboot默認日志輸出格式

  • Date 和 Time:毫秒精度,易於排序。
  • Log Level:ERROR,WARN,INFO,DEBUG或TRACE。
  • Process ID。
  • 一個---分隔符,用於區分實際 log 消息的開頭。
  • 線程 name:括在方括號中(可能會截斷 console 輸出)。
  • Logger name:這通常是源 class name(通常縮寫)。
  • log 消息。

2、文件輸出

在application.properites種配置:如下

3、集成其他的日志

在springboot環境中logging支持一下三種日志

在我目前項目中,使用的比較多的還是logback日志集成,在集成logback日志時,首先需要引入springboot的logging依賴包

org.springframework.boot spring-boot-starter-logging

在根目下創建logback-spring.xml文件,然后根據你的需求來配置需要打印的日志信息

我的具體配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<!--
scan:當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true。
scanPeriod:設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒當scan為true時,此屬性生效。默認的時間間隔為1分鍾。
debug:當此屬性設置為true時,將打印出logback內部日志信息,實時查看logback運行狀態。默認值為false。
-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <contextName>gather</contextName>
    <!-- 保存日志路徑-->
    <property name="log.path" value="log"/>
    <!-- 保存120天日志-->
    <property name="log.maxHistory" value="120"/>
    <!--
        日志輸出格式:
            %d表示日期時間,
            %thread表示線程名,
            %-5level:級別從左顯示5個字符寬度
            %logger{50} 表示logger名字最長50個字符,否則按照句點分割。
            %msg:日志消息,
            %n是換行符
        -->
    <property name="log.pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{50} - %msg%n"/>

    <!--輸出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

    <!--輸出到文件-->
    <!--
       當發生滾動時,決定 RollingFileAppender 的行為,涉及文件移動和重命名
       TimeBasedRollingPolicy: 最常用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動。
       -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/info/info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <MaxHistory>${log.maxHistory}</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>

        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--
            logger主要用於存放日志對象,也可以定義日志類型、級別
            name:表示匹配的logger類型前綴,也就是包的前半部分
            level:要記錄的日志級別,包括 TRACE < DEBUG < INFO < WARN < ERROR
            additivity:作用在於children-logger是否使用 rootLogger配置的appender進行輸出,
            false:表示只用當前logger的appender-ref,true:
            表示當前logger的appender-ref和rootLogger的appender-ref都有效
            -->
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/error/error.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="file_debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/debug/debug.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <root level="info">
        <appender-ref ref="console"/>
    </root>
  <!-- 
    root與logger是父子關系,沒有特別定義則默認為root,任何一個類只會和一個logger對應,
    要么是定義的logger,要么是root,判斷的關鍵在於找到這個logger,然后判斷這個logger的appender和level。 
    -->
    <root level="info">
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>
</configuration>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM