欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

Log4j2是 Log4j 的進(jìn)化版本,并提供了許多 Logback 可用的改進(jìn),同時(shí)解決了 Logback 體系結(jié)構(gòu)中的一些固有問(wèn)題。而且日志處理中我們會(huì)用到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日志門(mén)面,所以我們的代碼無(wú)需替換,只需要替換具體的日志框架以及對(duì)應(yīng)的配置文件。

配置Log4j2

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

 <?xml version="1.0" encoding="UTF-8"?>
 <!--日志級(jí)別以及優(yōu)先級(jí)排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
 <!--Configuration后面的status,這個(gè)用于設(shè)置log4j2自身內(nèi)部的信息輸出,可以不設(shè)置,當(dāng)設(shè)置成trace時(shí),你會(huì)看到log4j2內(nèi)部各種詳細(xì)輸出-->
 <!--monitorInterval:Log4j能夠自動(dòng)檢測(cè)修改配置 文件和重新配置本身,設(shè)置間隔秒數(shù)-->
 <configuration status="WARN" monitorInterval="30">
  <!--先定義所有的appender-->
  <appenders>
  <!--這個(gè)輸出控制臺(tái)的配置-->
   <console name="Console" target="SYSTEM_OUT">
   <!--輸出日志的格式-->
    <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
   </console>
  <!--文件會(huì)打印出所有信息,這個(gè)log每次運(yùn)行程序會(huì)自動(dòng)清空,由append屬性決定,這個(gè)也挺有用的,適合臨時(shí)測(cè)試用-->
  <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>
  <!-- 這個(gè)會(huì)打印出所有的info及以下級(jí)別的信息,每次大小超過(guò)size,則這size大小的日志會(huì)自動(dòng)存入按年份-月份建立的文件夾下面并進(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">
    <!--控制臺(tái)只輸出level及以上級(jí)別的信息(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個(gè)文件,這里設(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才會(huì)生效-->
  <loggers>
   <!--過(guò)濾掉spring和mybatis的一些無(wú)用的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} 會(huì)將日志打印到用戶目錄下

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

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

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(), "請(qǐng)關(guān)注公眾號(hào):Felordcn");
 
  return "log4j2";
 }
 
}

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

總結(jié)

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

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

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

來(lái)源:https://segmentfault.com/a/1190000020618973

相關(guān)文章

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

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

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

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

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

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

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

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

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

    java查詢mongodb中的objectid示例

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

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

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

    SpringBoot Mybatis Plus公共字段自動(dòng)填充功能

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

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

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

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

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

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

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

最新評(píng)論