spring boot日志及Log4j日志配置


1、默認實現的日志配置

Spring boot默認已經集成了logging,同時也是默認開啟的,如果想根據自己的需求對日志進行配置,方法很簡單——只需要在配置文件中進行相應設置,這里提供我自己的配置如下(配置文件采用了yml):

logging:
  #指定日志的等級,可以對不同包采用不同的等級,比如如下配置就是將root的等級設置為info,將com.example設置為debug
  level: {root: info,com.example: debug}
  #file是設置日志的輸出的路徑,這里需要注意的是file和path屬性只能選一個,不能同時存在
  file: log.log
  • 更多配置文件請參考Spring boot的官方文檔,說明很詳細

2、自定義日志配置

  • 使用默認的日志在實際開發中會存在很多問題,比如備份文件名稱無法自動重命名、各個等級的日志被放在一個文件中等,所以實際開發中為了更好滿足我們的需求,我們一般都會自定義采用配置的方式,日志自定配置步驟如下

2.1 修改spring-boot-starter的dependency

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

添加我們需要自定義的logging的dependency,這里用的是log4j2

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

修改之后我們就算移除了默認的日志配置,下面就可以自定義配置了

2.2 自定義配置文件log4j2.xml

  • Spring boot對自定義配置文件的名稱是有要求的,對Login4j2而言必須為log4j2-spring.xml or log4j2.xml
  • 關於配置文件中的參數,詳細參考官方文檔
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appenders>
        <!-- 控制台輸出 -->
        <console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class %L %M - %msg%n"/>
        </console>

        <!-- fileName:輸出路徑  filePattern:命名規則 -->
        <RollingFile name="all" fileName="logs/allOut.log"
                     filePattern="logs/$${date:yyyy-MM-dd}/allOut-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <ThresholdFilter level="all" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <!-- 輸出格式 -->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%n"/>
            <Policies>
                <!-- SizeBasedTriggeringPolicy單個文件的大小限制 -->
                <SizeBasedTriggeringPolicy size="2 MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy同一個文件下的最大文件數 -->
            <DefaultRolloverStrategy max="50"/>
        </RollingFile>

        <RollingFile name="err" fileName="logs/err.log"
                     filePattern="logs/$${date:yyyy-MM-dd}/err-%d{yyyy-MM-dd}-%i.log">
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <!-- 輸出格式 -->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <Policies>
                <!-- SizeBasedTriggeringPolicy單個文件的大小限制 -->
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy同一個文件下的最大文件數 -->
            <DefaultRolloverStrategy max="50"/>
        </RollingFile>
    </appenders>

    <loggers>
        <!--過濾掉spring無用的debug信息-->
        <logger name="org.springframework" level="error"></logger>

        <root level="debug">
            <appender-ref ref="Console"/>
            <appender-ref ref="all"/>
            <appender-ref ref="err"/>
        </root>
    </loggers>

</configuration>


免責聲明!

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



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