亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot2 集成log4j2日志框架的實現(xiàn)

 更新時間:2019年10月09日 08:29:46   作者:碼農(nóng)小胖哥  
這篇文章主要介紹了SpringBoot2 集成log4j2日志框架的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

Log4j2是 Log4j 的進(jìn)化版本,并提供了許多 Logback 可用的改進(jìn),同時解決了 Logback 體系結(jié)構(gòu)中的一些固有問題。而且日志處理中我們會用到kafka作為日志管道。而kafka客戶端依賴與Logback的兼容不是很完美,你可以選擇排除依賴沖突或者使用Log4j2 。
<!-- more -->

排除Logback依賴

Spring Boot 2.x默認(rèn)使用Logback日志框架,要使用 Log4j2必須先排除 Logback。

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

引入Log4j2依賴

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

上面的 log4j2 已經(jīng)適配了slf4j日志門面,所以我們的代碼無需替換,只需要替換具體的日志框架以及對應(yīng)的配置文件。

配置Log4j2

創(chuàng)建log4j2.xml文件,放在工程resources目錄里。這樣就可以不加任何配置。如果你需要指定配置文件需要在Spring boot 配置文件application.yml中指定 logging.config 屬性。下面是一份比較詳細(xì)的 log4j2 配置文件 :

 <?xml version="1.0" encoding="UTF-8"?>
 <!--日志級別以及優(yōu)先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
 <!--Configuration后面的status,這個用于設(shè)置log4j2自身內(nèi)部的信息輸出,可以不設(shè)置,當(dāng)設(shè)置成trace時,你會看到log4j2內(nèi)部各種詳細(xì)輸出-->
 <!--monitorInterval:Log4j能夠自動檢測修改配置 文件和重新配置本身,設(shè)置間隔秒數(shù)-->
 <configuration status="WARN" monitorInterval="30">
  <!--先定義所有的appender-->
  <appenders>
  <!--這個輸出控制臺的配置-->
   <console name="Console" target="SYSTEM_OUT">
   <!--輸出日志的格式-->
    <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
   </console>
  <!--文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,這個也挺有用的,適合臨時測試用-->
  <File name="log" fileName="log/test.log" append="false">
   <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
  </File>
  <!-- 這個會打印出所有的info及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進(jìn)行壓縮,作為存檔-->
   <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
      filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
    <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->  
    <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
    <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
    <Policies>
     <TimeBasedTriggeringPolicy/>
     <SizeBasedTriggeringPolicy size="100 MB"/>
    </Policies>
   </RollingFile>
   <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
      filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
    <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
    <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
    <Policies>
     <TimeBasedTriggeringPolicy/>
     <SizeBasedTriggeringPolicy size="100 MB"/>
    </Policies>
   <!-- DefaultRolloverStrategy屬性如不設(shè)置,則默認(rèn)為最多同一文件夾下7個文件,這里設(shè)置了20 -->
    <DefaultRolloverStrategy max="20"/>
   </RollingFile>
   <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
      filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
    <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
    <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
    <Policies>
     <TimeBasedTriggeringPolicy/>
     <SizeBasedTriggeringPolicy size="100 MB"/>
    </Policies>
   </RollingFile>
  </appenders>
  <!--然后定義logger,只有定義了logger并引入的appender,appender才會生效-->
  <loggers>
   <!--過濾掉spring和mybatis的一些無用的DEBUG信息-->
   <logger name="org.springframework" level="INFO"/> 
   <logger name="org.mybatis" level="INFO"/>
   <root level="all">
    <appender-ref ref="Console"/>
    <appender-ref ref="RollingFileInfo"/>
    <appender-ref ref="RollingFileWarn"/>
    <appender-ref ref="RollingFileError"/>
   </root>
  </loggers>
 </configuration>

基本上你拿上面的配置根據(jù)你自己的需要更改一下即可生效。 windows 下 ${sys:user.home} 會將日志打印到用戶目錄下

調(diào)用Logger輸出日志

下面的示例代碼使用了神器lombok中的@Slf4j 注解可以很方便的使用 org.slf4j.Logger 對象。日常開發(fā)盡量使用Slf4j門面來處理日志,盡量避免使用具體的日志框架。

package cn.felord.spring.security;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDate;
import java.util.Properties;

/**
 * @author dax
 * @since 2019/10/9 0:03
 */
@Slf4j
@RestController
@RequestMapping("/logging")
public class LogController {


 @GetMapping("/do")
 public String log() {

  log.info("log4j2 test date: {} info: {}", LocalDate.now(), "請關(guān)注公眾號:Felordcn");
 
  return "log4j2";
 }
 
}

控制臺輸出 :[00:14:48:161] [INFO] - cn.felord.spring.security.LogController.log(LogController.java:23) - log4j2 test date: 2019-10-09 info: 請關(guān)注公眾號:Felordcn 并存檔。

總結(jié)

今天我們將Spring Boot 2.x 的日志框架由默認(rèn)的Logback 替換為 log4j2 并著重的提及了一些實戰(zhàn)中使用的要點。相信你很快能夠掌握這一技巧。日志作為應(yīng)用運行情況,業(yè)務(wù)執(zhí)行情況的重要依據(jù),是開發(fā)排錯,業(yè)務(wù)追溯的重要保障。希望各位能夠重視起來。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

作者:碼農(nóng)小胖哥

來源:https://segmentfault.com/a/1190000020618973

相關(guān)文章

  • 反編譯jar實現(xiàn)的三種方式

    反編譯jar實現(xiàn)的三種方式

    本文主要介紹了反編譯jar實現(xiàn)的三種方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java中JMM與volatile關(guān)鍵字的學(xué)習(xí)

    Java中JMM與volatile關(guān)鍵字的學(xué)習(xí)

    這篇文章主要介紹了通過實例解析JMM和Volatile關(guān)鍵字的學(xué)習(xí),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-09-09
  • 一文詳解Java中Map和Set接口的使用方法

    一文詳解Java中Map和Set接口的使用方法

    Map和set是一種專門用來進(jìn)行搜索的容器或者數(shù)據(jù)結(jié)構(gòu),其搜索的效率與其具體的實例化子類有關(guān),可能在查找時進(jìn)行一些插入和刪除的操作,即動態(tài)查找,那上述兩種方式就不太適合了,本節(jié)介紹的Map和Set是一種適合動態(tài)查找的集合容器,需要的朋友可以參考下
    2024-08-08
  • springboot打成jar后無法讀取根路徑和文件的解決

    springboot打成jar后無法讀取根路徑和文件的解決

    這篇文章主要介紹了springboot打成jar后無法讀取根路徑和文件的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java查詢mongodb中的objectid示例

    java查詢mongodb中的objectid示例

    這篇文章主要介紹了java查詢mongodb中的objectid示例,需要的朋友可以參考下
    2014-04-04
  • SpringMVC請求參數(shù)的使用總結(jié)

    SpringMVC請求參數(shù)的使用總結(jié)

    在日常使用SpringMVC進(jìn)行開發(fā)的時候,有可能遇到前端各種類型的請求參數(shù),本文主要接介紹了SpringMVC請求參數(shù)的使用總結(jié),感興趣的可以了解一下
    2021-06-06
  • SpringBoot Mybatis Plus公共字段自動填充功能

    SpringBoot Mybatis Plus公共字段自動填充功能

    這篇文章主要介紹了SpringBoot Mybatis Plus公共字段自動填充功能的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • SpringBoot項目攔截器獲取Post方法的請求body實現(xiàn)

    SpringBoot項目攔截器獲取Post方法的請求body實現(xiàn)

    本文主要介紹了SpringBoot項目攔截器獲取Post方法的請求body,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解JavaWeb如何實現(xiàn)文件上傳和下載功能

    詳解JavaWeb如何實現(xiàn)文件上傳和下載功能

    這篇文章主要介紹了如何利用JavaWeb實現(xiàn)文件的上傳和下載功能,文中的示例代碼講解詳細(xì),對我們的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • Springboot+Shiro記錄用戶登錄信息并獲取當(dāng)前登錄用戶信息的實現(xiàn)代碼

    Springboot+Shiro記錄用戶登錄信息并獲取當(dāng)前登錄用戶信息的實現(xiàn)代碼

    這篇文章主要介紹了Springboot+Shiro記錄用戶登錄信息,并獲取當(dāng)前登錄用戶信息,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05

最新評論