springboot中log4j2日志框架的使用


一、常用日志框架以及其關系

  目前我們常見的日志框架為log4j、log4j2、logback,他們三者關系為,最先有log4j,然后作者覺得log4j有很大的性能問題因此又重寫了一個logback,並抽象出一個日志門面slf4j。由於之前log4j的問世,Apache就借鑒了log4j的部分原理,自己重寫了一個日志框架log4j2並且也實現了slf4j日志門面。

  log4j2畢竟是Apache自己開發的產品,所以很NB,由於過於優秀所以springBoot默認的日志框架並沒有采用log4j2,而是采用了logback框架,以及slf4j日志門面。

 二、SpringBoot中如何使用日志框架

  1.如果想用logback框架,則直接在根目錄下添加一個logback.xml配置文件即可,配置文件內容可自行找度娘。

  2.如果想用log4j2框架,則需先移除springboot中的默認的logback框架,以及spring中自帶的日志框架,並在根目錄下添加log4j2.xml配置文件即可,具體配置找度娘,或者參考我的樣本。

    ①.移除springboot中的默認日志框架:spring-boot-starter-logging

    ②.引入log4j2框架jar包:spring-boot-starter-log4j2

    ③.移除spring中的jar包:commons-logging

    ④.添加相應的配置文件

  3.推薦使用log4j2日志框架,其中有個異步日志配置,性能提升較大,大家可以研究一下。

提示:一個項目中應該只用一種日志框架,所以一定要在pom.xml中將其余框架引入的日志框架去除,或采用相應的替換jar包替換

三、log4j2框架配置文件樣本

  logback配置文件示例:

<?xml version="1.0" encoding="UTF-8"?>
<!-- <configuration status="OFF" packages="com.xyebank.hzx.core.log4j2"> -->
<configuration status="OFF">
    <properties>
        <!-- 當前日志文件路徑 -->
        <property name="fileSavePath" value="/home/logs/sweep/sweep(${hostName}).log"/>
        <property name="errorFileSavePath" value="/home/logs/sweep/sweep(${hostName})-error.log"/>
        <!-- 歷史日志文件路徑 -->
        <property name="fileBackSavePath" value="/home/backlogs/sweep"/>
        <!-- 日志級別 -->
        <property name="logLevel" value="debug"/>
        <property name="layoutPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS}---[%-5level]---[%-32X{traceId}]---[%-16.16thread]---[%c{64}] : %msg%n" />
    </properties>
    <!-- 日志主配置 -->
    <appenders>
        <!-- 控制台 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- <SensitiveDataPatternLayout pattern="${layoutPattern}" /> -->
            <PatternLayout pattern="${layoutPattern}"/>
        </Console>
        <!-- 文件 -->
        <RollingRandomAccessFile name="RollingRandomAccessFile" fileName="${fileSavePath}" filePattern="${fileBackSavePath}-%d{yyyy-MM-dd}.%i.log.zip">
            <!-- <SensitiveDataPatternLayout pattern="${layoutPattern}" /> -->
            <PatternLayout pattern="${layoutPattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="200MB" />
            </Policies>
            <DefaultRolloverStrategy max="30" />
        </RollingRandomAccessFile>
        <!-- 錯誤日志 -->
        <RollingRandomAccessFile name="ERROR" fileName="${errorFileSavePath}" filePattern="${fileBackSavePath}-error-%d{yyyy-MM-dd}.%i.log.zip">
            <!-- <SensitiveDataPatternLayout pattern="${layoutPattern}" /> -->
            <PatternLayout pattern="${layoutPattern}"/>
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <Policies>
                <SizeBasedTriggeringPolicy size="200MB" />
            </Policies>
            <DefaultRolloverStrategy max="30" />
        </RollingRandomAccessFile>
    </appenders>

    <!--過濾掉部分組件的其余錯誤信息-->
    <loggers>
<!--        <AsyncLogger name="org.apache.zookeeper" level="error" additivity="false">-->
<!--            <appender-ref ref="RollingRandomAccessFile" />-->
<!--            <appender-ref ref="ERROR" />-->
<!--            <appender-ref ref="Console" />-->
<!--        </AsyncLogger>-->
<!--        <AsyncLogger name="com.alibaba.dubbo" level="error" additivity="false">-->
<!--            <appender-ref ref="RollingRandomAccessFile" />-->
<!--            <appender-ref ref="ERROR" />-->
<!--            <appender-ref ref="Console" />-->
<!--        </AsyncLogger>-->
<!--        <AsyncLogger name="org.I0Itec.zkclient" level="error" additivity="false">-->
<!--            <appender-ref ref="RollingRandomAccessFile" />-->
<!--            <appender-ref ref="ERROR" />-->
<!--            <appender-ref ref="Console" />-->
<!--        </AsyncLogger>-->
<!--        <AsyncLogger name="org.mongodb.driver.cluster" level="error" additivity="false">-->
<!--            <appender-ref ref="RollingRandomAccessFile" />-->
<!--            <appender-ref ref="ERROR" />-->
<!--            <appender-ref ref="Console" />-->
<!--        </AsyncLogger>-->
<!--        <AsyncRoot level="${logLevel}">-->
<!--            <appender-ref ref="RollingRandomAccessFile" />-->
<!--            <appender-ref ref="ERROR" />-->
<!--            <appender-ref ref="Console" />-->
<!--        </AsyncRoot>-->

        <Root level="${logLevel}" >
            <appender-ref ref="RollingRandomAccessFile"/>
            <appender-ref ref="ERROR" />
            <appender-ref ref="Console" />
        </Root>
    </loggers>
</configuration>

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM