spring boot 集成Log4j2

  1. 引入依賴
 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <exclusions>
        <!--去除spring boot默認使用的logging-->
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>


  <!--Log4j2依賴包 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

    <!-- Log4j2 異步支持 -->
    <dependency>
      <groupId>com.lmax</groupId>
      <artifactId>disruptor</artifactId>
      <version>3.3.6</version>
    </dependency>

    <!--  lombok 支持log注解 ,簡化代碼-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.16.14</version>
    </dependency>

<!-- 使用log4j2.yml格式的配置文件,必須加這個依賴,用于識別.yml -->
    <dependency>  
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-yaml</artifactId>
    </dependency>
  1. 在resources目錄下創建
Configuration:
#  status,這個用于設置log4j2自身內部的信息輸出,可以不設置,當設置# 成trace時 你會看到log4j2內部各種詳細輸出。可以設置成OFF(關閉) 或 # Error(只輸出錯誤信息)。
  status: warn

  Properties: # 定義全局變量
    Property: # 缺省配置(用于開發環境)。其他環境需要在VM參數中指定,如下:
      #測試:-Dlog.level.console=warn -Dlog.level.xxx=trace
      #生產:-Dlog.level.console=warn -Dlog.level.xxx=info
      - name: log.level.console
        value: error
      - name: log.level.xxx
        value: trace
      - name: log.path
        value: logs
      - name: project.name
        value: log

  Appenders:
    Console:  #輸出到控制臺
      name: CONSOLE
      target: SYSTEM_OUT
      ThresholdFilter:
        level: ${sys:log.level.console} # “sys:”表示:如果VM參數中沒指定這個變量值,則使用本文件中定義的缺省全局變量值
        onMatch: ACCEPT
        onMismatch: DENY
      PatternLayout:
        pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"
    RollingFile: # 輸出到文件,超過128MB歸檔
      - name: ROLLING_FILE
        ignoreExceptions: false
        fileName: ${log.path}/${project.name}.log
        filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
        PatternLayout:
          pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%F:%L) - %m%n"
        Policies:
          SizeBasedTriggeringPolicy:
            size: "128 MB"
        DefaultRolloverStrategy:
          max: 1000

  Loggers:
    Root:
      level: info
      AppenderRef:
        - ref: CONSOLE
        - ref: ROLLING_FILE
#    Logger: # 為com.xxx包配置特殊的Log級別,方便調試
#      - name: com.xxx
#        additivity: false
#        level: ${sys:log.level.xjj}
#        AppenderRef:
#          - ref: CONSOLE
#          - ref: ROLLING_FILE
  1. 測試
  public void logging() {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        log.info(simpleDateFormat.format(date));
        log.debug("this is debug");
        log.error(date.getTime());
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容