中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot2中如何配置Log4j2實現不同環境日志打印

發布時間:2021-11-20 15:35:18 來源:億速云 閱讀:729 作者:小新 欄目:編程語言

這篇文章主要介紹了SpringBoot2中如何配置Log4j2實現不同環境日志打印,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一、Log4j2日志簡介

日志打印是了解Web項目運行的最直接方式,所以在項目開發中是需要首先搭建好的環境。

1、Log4j2特點

1)核心特點
相比與其他的日志系統,log4j2丟數據這種情況少;disruptor技術,在多線程環境下,性能高;并發的特性,減少了死鎖的發生。

2)性能測試
SpringBoot2中如何配置Log4j2實現不同環境日志打印

SpringBoot2中如何配置Log4j2實現不同環境日志打印

2、日志打印之外觀模式

每一種日志框架都有自己單獨的API,要使用對應的框架就要使用其對應的API,增加應用程序代碼和日志框架的耦合性。
《阿里巴巴Java開發手冊》,其中有一條規范做了『強制』要求:

SpringBoot2中如何配置Log4j2實現不同環境日志打印

SLF4J?
Java簡易日志門面(Simple Logging Facade for Java,縮寫SLF4J),是一套包裝Logging 框架的界面程式,以外觀模式實現。

二、配置日志打印

1、項目結構

SpringBoot2中如何配置Log4j2實現不同環境日志打印

2、不同環境的日志配置

使用最直接的方式,不同環境加載不同的日志配置。
1)開發環境配置

logging:
  config: classpath:log4j2-boot-dev.xml

2)生產環境配置

logging:
  config: classpath:log4j2-boot-pro.xml

3、Log4j2的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!--monitorInterval:Log4j2 自動檢測修改配置文件和重新配置本身,設置間隔秒數-->
<configuration monitorInterval="5">
    <!--日志級別以及優先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
    <!--變量配置-->
    <Properties>
        <!-- 格式化輸出:
            %date表示日期,%thread表示線程名,
            %-5level:級別從左顯示5個字符寬度
            %msg:日志消息,%n是換行符-->
        <!-- %logger{36} 表示 Logger 名字最長36個字符 -->
        <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
        <!-- 定義日志存儲的路徑,不要配置相對路徑 -->
        <property name="FILE_PATH" value="E:/logs/dev" />
        <property name="FILE_NAME" value="boot-log4j2" />
    </Properties>
    <appenders>
        <console name="Console" target="SYSTEM_OUT">
            <!--輸出日志的格式-->
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <!--控制臺只輸出level及其以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
        </console>
        <!--文件會打印出所有信息-->
        <File name="Filelog" fileName="${FILE_PATH}/log4j2.log" append="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </File>
        <!-- 這個會打印出所有的info及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
        <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
            <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <!--interval屬性用來指定多久滾動一次,默認是1 hour-->
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy同一文件夾下15個文件開始覆蓋-->
            <DefaultRolloverStrategy max="15"/>
        </RollingFile>
        <!-- 這個會打印出所有的warn及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
        <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
            <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <!--interval屬性用來指定多久滾動一次,默認是1 hour-->
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy同一文件夾下15個文件開始覆蓋-->
            <DefaultRolloverStrategy max="15"/>
        </RollingFile>
        <!-- 這個會打印出所有的error及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
        <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
            <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <!--interval屬性用來指定多久滾動一次,默認是1 hour-->
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy同一文件夾下15個文件開始覆蓋-->
            <DefaultRolloverStrategy max="15"/>
        </RollingFile>
    </appenders>
    <!--Logger節點用來單獨指定日志的形式,比如要為指定包下的class指定不同的日志級別等。-->
    <!--然后定義loggers,只有定義了logger并引入的appender,appender才會生效-->
    <loggers>
        <!--過濾掉spring和mybatis的一些無用的DEBUG信息-->
        <logger name="org.mybatis" level="info" additivity="false">
            <AppenderRef ref="Console"/>
        </logger>
        <!--監控系統信息-->
        <!--若是additivity設為false,則 子Logger 只會在自己的appender里輸出,而不會在 父Logger 的appender里輸出。-->
        <Logger name="org.springframework" level="info" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>
        <root level="info">
            <appender-ref ref="Console"/>
            <appender-ref ref="Filelog"/>
            <appender-ref ref="RollingFileInfo"/>
            <appender-ref ref="RollingFileWarn"/>
            <appender-ref ref="RollingFileError"/>
        </root>
    </loggers>
</configuration>

三、測試日志打印

1、簡單的測試程序

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Log4j2Controller {
    private static final Logger LOGGER = LoggerFactory.getLogger(Log4j2Controller.class);
    /**
     * 日志級別
     * OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL
     */
    @RequestMapping("/printLog")
    public String printLog (){
        LOGGER.error("ERROR 級別日志");
        LOGGER.warn("WARN 級別日志");
        LOGGER.info("INFO 級別日志");
        LOGGER.debug("DEBUG 級別日志");
        LOGGER.trace("TRACE 級別日志");
        return "success" ;
    }
}

2、測試效果圖

SpringBoot2中如何配置Log4j2實現不同環境日志打印

感謝你能夠認真閱讀完這篇文章,希望小編分享的“SpringBoot2中如何配置Log4j2實現不同環境日志打印”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丽江市| 佛坪县| 中山市| 茶陵县| 漳浦县| 克拉玛依市| 平舆县| 布尔津县| 称多县| 黄石市| 蕉岭县| 辛集市| 惠州市| 拉萨市| 淮南市| 白银市| 上林县| 雷州市| 靖边县| 东乡| 顺义区| 鄱阳县| 黄山市| 兴国县| 淅川县| 长汀县| 青田县| 闽侯县| 延寿县| 新竹市| 安化县| 枝江市| 普洱| 昂仁县| 松溪县| 资讯| 外汇| 榆社县| 洱源县| 分宜县| 蒙自县|