Spring-boot 使用log4j2日志記錄-基本配置和使用

1. pom.xml引入依賴

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 這里需要排除spring自帶的日志,否則會(huì)有沖突 -->
    <exclusions>
      <exclusion>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.13.0</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.13.0</version>
  </dependency>
  <!-- 這里引入了slf4j的實(shí)現(xiàn),否則會(huì)提示SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". -->
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.13.0</version>
  </dependency>
</dependencies>

2. java程序調(diào)用

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class HelloWorld {
    //官方建議使用靜態(tài)成員變量來獲取logger實(shí)例
    private static final Logger logger = LogManager.getLogger("HelloWorld");
    public static void main(String[] args) {
        logger.info("Hello, World!");
    }
}

3. 配置文件log4j2.xml

如果不提供配置文件,spring boot會(huì)使用內(nèi)置的配置文件

3.1 配置spring boot的log配置路徑

src/main/resources/application.yml

logging:
  config: classpath:log4j2.xml //表示讀取放在resources根目錄的名稱log4j2.xml的文件
3.2 配置log4j2.xml文件

src/main/resources/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <!-- 定義命令行輸出格式 -->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <!-- 定義日志文件格式和儲(chǔ)存位置 -->
        <RollingFile name="FileLogger"
                     fileName="logs/app.log"
                     filePattern="logs/app-%d{yyyy-MM-dd}.log"
                     append="true">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
            <!-- 可以設(shè)置文件分片策略(時(shí)間,大小) -->
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="100MB"/>
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <!-- 設(shè)置日志啟動(dòng)的等級(jí),并綁定對(duì)應(yīng)的日志配置 -->
        <Root level="ERROR">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="FileLogger"/>
        </Root>
    </Loggers>
</Configuration>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容