SpringBoot底層預設使用logback日誌框架。 切換使用Log4j2日誌框架。 pom.xml配置 <!-- web場景啟動器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-b ...
SpringBoot底層預設使用logback日誌框架。
切換使用Log4j2日誌框架。
pom.xml配置
<!-- web場景啟動器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除預設日誌框架 -->
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加log4j2日誌框架的場景啟動器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
log4j2-spring.xml
文件命名固定log4j2-spring.xml
,讓SpringBoot載入配置文件。
文件名為log4j2.xml
,文件將繞過SpringBoot直接調用日誌框架。
<?xml version="1.0" encoding="UTF-8"?>
<!--
Configuration後面的status,這個用於設置log4j2自身內部的信息輸出,可以不設置,
當設置成trace時,可以看到log4j2內部各種詳細輸出
monitorInterval:Log4j能夠自動檢測修改配置文件和重新配置本身,設置間隔秒數
-->
<Configuration status="debug" monitorInterval="180" packages="com.evan" disableAnsi="false" >
<!--日誌級別以及優先順序排序:
OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL
-->
<properties>
<!-- 文件日誌在當前項目目錄下 -->
<property name="LOG_HOME">./logs</property>
<!--文件日誌在當前項目所在磁碟的根目錄存儲-->
<!--<property name="LOG_HOME">/logs</property>-->
<!--文件日誌指定存儲地址-->
<!--<property name="LOG_HOME">D:/logs</property>-->
<!--日誌輸出格式 -->
<property name="PATTERN">%date{YYYY-MM-dd HH:mm:ss,SSS} %level [%thread][%file:%line] - %msg%n%throwable</property>
</properties>
<Appenders>
<!--*********************控制台日誌***********************-->
<Console name="consoleAppender" target="SYSTEM_OUT">
<!--控制台只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch) -->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<!--設置日誌格式及顏色-->
<PatternLayout
pattern="%style{%d{ISO8601}}{bright,green} %highlight{%-5level} [%style{%t}{bright,blue}] %style{%C{}}{bright,yellow}: %msg%n%style{%throwable}{red}"
noConsoleNoAnsi="false"/>
</Console>
<!--*********************文件日誌***********************-->
<!--all級別日誌-->
<RollingFile name="allFileAppender"
fileName="${LOG_HOME}/all.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/all-%d{yyyy-MM-dd}-%i.log.gz">
<!--設置日誌格式-->
<PatternLayout>
<pattern>%d %p %C{} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<!-- 設置日誌文件切分參數 -->
<!--<OnStartupTriggeringPolicy/>-->
<!--設置日誌基礎文件大小,超過該大小就觸發日誌文件滾動更新-->
<SizeBasedTriggeringPolicy size="100MB"/>
<!--設置日誌文件滾動更新的時間,依賴於文件命名filePattern的設置-->
<TimeBasedTriggeringPolicy/>
</Policies>
<!--設置日誌的文件個數上限,不設置預設為7個,超過大小後會被覆蓋;依賴於filePattern中的%i-->
<DefaultRolloverStrategy max="100"/>
</RollingFile>
<!--debug級別日誌-->
<RollingFile name="debugFileAppender"
fileName="${LOG_HOME}/debug.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log.gz">
<Filters>
<!--過濾掉info及更高級別日誌-->
<ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<!--設置日誌格式-->
<PatternLayout>
<pattern>%d %p %C{} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<!-- 設置日誌文件切分參數 -->
<!--<OnStartupTriggeringPolicy/>-->
<!--設置日誌基礎文件大小,超過該大小就觸發日誌文件滾動更新-->
<SizeBasedTriggeringPolicy size="100MB"/>
<!--設置日誌文件滾動更新的時間,依賴於文件命名filePattern的設置-->
<TimeBasedTriggeringPolicy/>
</Policies>
<!--設置日誌的文件個數上限,不設置預設為7個,超過大小後會被覆蓋;依賴於filePattern中的%i-->
<DefaultRolloverStrategy max="100"/>
</RollingFile>
<!--info級別日誌-->
<RollingFile name="infoFileAppender"
fileName="${LOG_HOME}/info.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz">
<Filters>
<!--過濾掉warn及更高級別日誌-->
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<!--設置日誌格式-->
<PatternLayout>
<pattern>%d %p %C{} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<!-- 設置日誌文件切分參數 -->
<!--<OnStartupTriggeringPolicy/>-->
<!--設置日誌基礎文件大小,超過該大小就觸發日誌文件滾動更新-->
<SizeBasedTriggeringPolicy size="100MB"/>
<!--設置日誌文件滾動更新的時間,依賴於文件命名filePattern的設置-->
<TimeBasedTriggeringPolicy/>
</Policies>
<!--設置日誌的文件個數上限,不設置預設為7個,超過大小後會被覆蓋;依賴於filePattern中的%i-->
<!--<DefaultRolloverStrategy max="100"/>-->
</RollingFile>
<!--warn級別日誌-->
<RollingFile name="warnFileAppender"
fileName="${LOG_HOME}/warn.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz">
<Filters>
<!--過濾掉error及更高級別日誌-->
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<!--設置日誌格式-->
<PatternLayout>
<pattern>%d %p %C{} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<!-- 設置日誌文件切分參數 -->
<!--<OnStartupTriggeringPolicy/>-->
<!--設置日誌基礎文件大小,超過該大小就觸發日誌文件滾動更新-->
<SizeBasedTriggeringPolicy size="100 MB"/>
<!--設置日誌文件滾動更新的時間,依賴於文件命名filePattern的設置-->
<TimeBasedTriggeringPolicy/>
</Policies>
<!--設置日誌的文件個數上限,不設置預設為7個,超過大小後會被覆蓋;依賴於filePattern中的%i-->
<DefaultRolloverStrategy max="100"/>
</RollingFile>
<!--error及更高級別日誌-->
<RollingFile name="errorFileAppender"
fileName="${LOG_HOME}/error.log"
filePattern="${LOG_HOME}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">
<!--設置日誌格式-->
<PatternLayout>
<pattern>%d %p %C{} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<!-- 設置日誌文件切分參數 -->
<!--<OnStartupTriggeringPolicy/>-->
<!--設置日誌基礎文件大小,超過該大小就觸發日誌文件滾動更新-->
<SizeBasedTriggeringPolicy size="100 MB"/>
<!--設置日誌文件滾動更新的時間,依賴於文件命名filePattern的設置-->
<TimeBasedTriggeringPolicy/>
</Policies>
<!--設置日誌的文件個數上限,不設置預設為7個,超過大小後會被覆蓋;依賴於filePattern中的%i-->
<DefaultRolloverStrategy max="100"/>
</RollingFile>
<!--json格式error級別日誌-->
<RollingFile name="errorJsonAppender"
fileName="${LOG_HOME}/error-json.log"
filePattern="${LOG_HOME}/error-json-%d{yyyy-MM-dd}-%i.log.gz">
<JSONLayout compact="true" eventEol="true" locationInfo="true"/>
<Policies>
<SizeBasedTriggeringPolicy size="100 MB"/>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<!-- 根日誌設置 -->
<Root level="debug">
<AppenderRef ref="allFileAppender" level="all"/>
<AppenderRef ref="consoleAppender" level="debug"/>
<AppenderRef ref="debugFileAppender" level="debug"/>
<AppenderRef ref="infoFileAppender" level="info"/>
<AppenderRef ref="warnFileAppender" level="warn"/>
<AppenderRef ref="errorFileAppender" level="error"/>
<AppenderRef ref="errorJsonAppender" level="error"/>
</Root>
<Logger name="springfox" level="INFO"/>
<!--spring日誌-->
<Logger name="org.springframework" level="info"/>
<!--druid數據源日誌-->
<Logger name="druid.sql.Statement" level="info"/>
<!-- mybatis日誌 -->
<Logger name="com.mybatis" level="warn"/>
<Logger name="org.hibernate" level="warn"/>
<Logger name="com.zaxxer.hikari" level="info"/>
<Logger name="org.quartz" level="info"/>
<Logger name="com.ym.learn" level="debug"/>
</Loggers>
</Configuration>
控制台日誌輸出信息
日誌文件生成
說明:日誌文件生成在當前項目下