最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot整合log4j的踩坑實戰(zhàn)記錄

 更新時間:2022年04月08日 15:28:16   作者:易小順  
log日志的重要性不言而喻,所以我們需要在系統(tǒng)內(nèi)根據(jù)實際的業(yè)務進行日志的整合,下面這篇文章主要給大家介紹了關于springboot整合log4j的踩坑實戰(zhàn)記錄,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

1、依賴添加

 1.1、添加依賴

需要引入 log4j 的依賴支持,推薦自己確定使用的版本。

<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-to-slf4j</artifactId>
        <version>2.11.2</version>
</dependency>

 1.2、剔除依賴

springboot 默認自己內(nèi)部添加了對日志的支持,需要將其全部剔除掉,不然會影響 log4j 的依賴使用。

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
        <exclusions>
            <exclusion>
               <groupId>*</groupId>
                <artifactId>*</artifactId>
            </exclusion>
        </exclusions>
</dependency>

2、配置日志

 2.1、日志打印記錄

 根據(jù)自己的需求進行相關的配置,這里需要注意的是使用 xml 文件進行配置,使用 properties 有坑沒爬起來,文件名自定義,沒有啥要求,都會在配置文件中進行指定的。

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="10 seconds">
    <contextName>beordie</contextName>
    <property name="path" value="E:\file\javalearn\blog\src\main\resources\logs" />
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>info</level>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${path}/debug.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log}/info.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log}/warn.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log}/error.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <springProfile name="dev">
        <logger name="com.beordie" level="debug"/>
    </springProfile>

    <root level="info">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="DEBUG_FILE" />
        <appender-ref ref="INFO_FILE" />
        <appender-ref ref="WARN_FILE" />
        <appender-ref ref="ERROR_FILE" />
    </root>
</configuration>

 2.2、指定配置文件

還需要在 spring boot 的項目配置文件中進行配置的指定。

logging:
  config: classpath:log4j.xml

到這里完成對日志的整體配置,啟動項目通過下面語句拿到日志對象即可進行日志的打印輸出。

private final Logger LOGGING = LoggerFactory.getLogger(ArticleController.class);

補充:log4j調(diào)優(yōu)和注意事項

日志模式-同步/異步

log4j2提供了AsyncAppender和AsyncLogger以及全局異步,開啟方式如下:

  • 同步模式:默認配置即為同步模式,即沒有使用任何AsyncAppender和AsyncLogger。
  • 全局異步:配置按照同步方式配,通過添加jvm啟動參數(shù)即可開啟全局異步,無需修改配置和應用。
  • 混合異步:使用異步Logger和同步Logger的混合配置,且不開啟全局異步,即Logger配置中部分AsyncLogger,部分Logger。

日志模式使用注意事項:

  • 如果使用異步,建議使用AsyncLogger實現(xiàn)而不是AsyncAppender。
  • 如果使用同步,AsyncLogger、AsyncAppender和全局異步只能使用一種,不可以同時配置AsyncAppender和AsyncLogger,或者配置了異步的情況下啟用了全局異步。

日志滾動和清除策略

log4j2提供了基于文件大小的滾動策略和基于時間的滾動策略,也可以二者并用,這里給出基于大小的滾動策略配置和基于大小/時間雙滾動策略配置:

  • 基于大小的滾動策略:按照大小滾動,啟用壓縮,并最多保留N個文件
  • 基于大小/時間雙滾動滾動策略:按照大小和時間滾動,啟用壓縮,單位時間內(nèi)控制最多保留日志個數(shù)并控制總的日志留存時間。

總結(jié)

到此這篇關于springboot整合log4j踩坑的文章就介紹到這了,更多相關springboot整合log4j踩坑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決Error occurred during initialization of VM Java虛擬機初始化失敗問題

    解決Error occurred during initialization o

    這篇文章主要介紹了解決Error occurred during initialization of VM Java虛擬機初始化失敗問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 關于jar包與war包的區(qū)別及說明

    關于jar包與war包的區(qū)別及說明

    這篇文章主要介紹了關于jar包與war包的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 一文帶你搞懂Java中方法重寫與方法重載的區(qū)別

    一文帶你搞懂Java中方法重寫與方法重載的區(qū)別

    這篇文章主要介紹了Java中方法重寫與方法重載有哪些區(qū)別,文中有詳細的代碼示例,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • 如何在Spring?Boot中使用OAuth2認證和授權

    如何在Spring?Boot中使用OAuth2認證和授權

    這篇文章主要介紹了如何在Spring?Boot中使用OAuth2認證和授權的相關資料,OAuth2.0是一種開放的授權協(xié)議,它允許用戶授權第三方應用訪問其賬戶(或資源),而無需共享其用戶賬戶憑據(jù),需要的朋友可以參考下
    2023-12-12
  • Spring?依賴查找的使用小結(jié)

    Spring?依賴查找的使用小結(jié)

    在不同的編程框架和容器中,依賴查找的方式可能會有所不同,本文主要介紹了Spring依賴查找的使用小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • spring boot加載資源路徑配置和classpath問題解決

    spring boot加載資源路徑配置和classpath問題解決

    這篇文章主要介紹了spring boot加載資源路徑配置和classpath問題解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 一文帶你深入了解Java的自動拆裝箱

    一文帶你深入了解Java的自動拆裝箱

    Java推出了對于基本數(shù)據(jù)類型的對應的對象,將基本數(shù)據(jù)類型轉(zhuǎn)換為對象就稱為裝箱,反之則是拆箱,本文主要為大家介紹了Java自動拆裝箱的原理與應用,需要的可以參考下
    2023-11-11
  • maven倉庫repositories和mirrors的配置及區(qū)別詳解

    maven倉庫repositories和mirrors的配置及區(qū)別詳解

    這篇文章主要介紹了maven倉庫repositories和mirrors的配置及區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • java實現(xiàn)socket從服務器連續(xù)獲取消息的示例

    java實現(xiàn)socket從服務器連續(xù)獲取消息的示例

    這篇文章主要介紹了java實現(xiàn)socket從服務器連續(xù)獲取消息的示例,需要的朋友可以參考下
    2014-04-04
  • 新建Maven工程出現(xiàn)Process?Terminated的問題解決

    新建Maven工程出現(xiàn)Process?Terminated的問題解決

    當Maven出現(xiàn)"Process terminated"錯誤時,這通常是由于配置文件或路徑錯誤導致的,本文主要介紹了新建Maven工程出現(xiàn)Process?Terminated的問題解決,感興趣的可以了解一下
    2024-04-04

最新評論

江口县| 富平县| 壶关县| 廉江市| 大洼县| 濮阳市| 寿阳县| 永春县| 湄潭县| 黔江区| 凤冈县| 大化| 砀山县| 永吉县| 东山县| 依兰县| 伊川县| 平果县| 聂拉木县| 扶风县| 奇台县| 天津市| 略阳县| 龙陵县| 县级市| 弥勒县| 泸水县| 永州市| 会同县| 木里| 西乡县| 日照市| 抚松县| 百色市| 永年县| 西藏| 大渡口区| 顺昌县| 江永县| 曲松县| 嘉兴市|