2、springboot 集成 log4j2

1、Spring boot默認是使用logback來進行日誌記錄,而大多數框架依賴log4j,即將logback替換爲log4j2

 

2、引入log4j2 的maven依賴

 

 

3、如果引入springboot 其他組件的自動啓動包,也要注意是否默認啓用了logback ,例如aop啓動包也需要去除logback依賴

4、配置log4j2的啓動參數

配置文件放在src/main/java/application 下,命名爲log4j2.xml ,項目啓動時,log4j2會自動到這個目錄加載配置文件
也可以在application.properties 中配置路徑:logging.config=classpath:log4j2.xml

***配置文件中加了詳細的配置說明,具體參數不再重複解釋;

      log4j2 配置文件(xml)

<?xml version="1.0" encoding="UTF-8"?>

<!-- 日誌級別 trace<debug<info<warn<error<fatal -->

<configuration status="debug">

    <!-- 定義輸出器 :Console 控制檯、debug\info\warn\error\sql等日誌信息輸出器 -->

    <appenders>

 

        <Console name="Console" target="SYSTEM_OUT">

            <!--只接受程序中DEBUG級別的日誌進行處理-->

            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>

            <PatternLayout pattern="[%d{HH:mm:ss.SSS}] %-5level %class{36} %L %M - %msg%xEx%n"/>

        </Console>

 

        <!--處理DEBUG級別的日誌,並把該日誌放到logs/debug.log文件中-->

        <!--打印出DEBUG級別日誌,每次大小超過size,則這size大小的日誌會自動存入按年份-月份建立的文件夾下面並進行壓縮,作爲存檔-->

        <RollingFile name="RollingFileDebug" fileName="./logs/debug.log"

                     filePattern="logs/$${date:yyyy-MM}/debug-%d{yyyy-MM-dd}-%i.log.gz">

            <!-- 過濾器控制:本日誌文件只記錄 debug 文件,info及以上日誌不記錄 -->

            <Filters>

                <ThresholdFilter level="DEBUG"/>

                <ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/>

            </Filters>

            <!-- 日誌格式 -->

            <PatternLayout

                    pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/>

            <!--日誌文件維護策略:-->

            <Policies>

                <!-- 每隔一天轉存一次 -->

                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>

                <!-- 文件大小不超過200M -->

                <SizeBasedTriggeringPolicy size="200 MB"/>

 

            </Policies>

        </RollingFile>

 

        <!--處理INFO級別的日誌,並把該日誌放到logs/info.log文件中-->

        <RollingFile name="RollingFileInfo" fileName="./logs/info.log"

                     filePattern="logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz">

            <Filters>

                <!--只接受INFO級別的日誌,其餘的全部拒絕處理-->

                <ThresholdFilter level="INFO"/>

                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>

            </Filters>

            <PatternLayout

                    pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/>

            <Policies>

                <!-- 每隔一天轉存一次 -->

                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>

                <!-- 文件大小不超過200M -->

                <SizeBasedTriggeringPolicy size="200 MB"/>

            </Policies>

        </RollingFile>

 

        <!--處理WARN級別的日誌,並把該日誌放到logs/warn.log文件中-->

        <RollingFile name="RollingFileWarn" fileName="./logs/warn.log"

                     filePattern="logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz">

            <Filters>

                <ThresholdFilter level="WARN"/>

                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>

            </Filters>

            <PatternLayout

                    pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/>

            <Policies>

                <!-- 每隔一天轉存一次 -->

                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>

                <!-- 文件大小不超過200M -->

                <SizeBasedTriggeringPolicy size="200 MB"/>

            </Policies>

        </RollingFile>

 

        <!--處理error級別的日誌,並把該日誌放到logs/error.log文件中-->

        <RollingFile name="RollingFileError" fileName="./logs/error.log"

                     filePattern="logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz">

            <ThresholdFilter level="ERROR"/>

            <PatternLayout

                    pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %class{36} %L %M - %msg%xEx%n"/>

            <Policies>

                <!-- 每隔一天轉存一次 -->

                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>

                <!-- 文件大小不超過200M -->

                <SizeBasedTriggeringPolicy size="200 MB"/>

            </Policies>

        </RollingFile>

 

        <!--druid的日誌記錄追加器-->

      <!--  <RollingFile name="druidSqlRollingFile" fileName="./logs/druid-sql.log"

                     filePattern="logs/$${date:yyyy-MM}/api-%d{yyyy-MM-dd}-%i.log.gz">

 

            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss}] %-5level %L %M - %msg%xEx%n"/>

            <Policies>

                &lt;!&ndash; 每隔一天轉存一次 &ndash;&gt;

                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>

                &lt;!&ndash; 文件大小不超過200M &ndash;&gt;

                <SizeBasedTriggeringPolicy size="200 MB"/>

            </Policies>

        </RollingFile>-->

    </appenders>

 

    <loggers>

        <!-- 定義root根logger -->

        <!-- 日誌級別爲debug 具體日誌級別由appender限制 -->

        <root level="all">

            <appender-ref ref="Console" level="info"/>

            <appender-ref ref="RollingFileInfo" level="info"/>

            <appender-ref ref="RollingFileWarn" level="warn"/>

            <appender-ref ref="RollingFileError" level="error"/>

            <appender-ref ref="RollingFileDebug" level="debug"/>

        </root>

 

        <!--記錄druid-sql的記錄-->

     <!--   <logger name="druid.sql.Statement" level="error" additivity="false">

            <appender-ref ref="druidSqlRollingFile"/>

        </logger>-->

 

 

        <!--log4j2 自帶過濾日誌-->

        <!--過濾掉spring和mybatis的一些無用的DEBUG信息-->

        <Logger name="org.springframework" level="INFO"/>

        <Logger name="org.mybatis" level="debug"/>

        <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />

        <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />

        <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />

        <logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>

        <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />

        <Logger name="org.crsh.plugin" level="warn" />

        <logger name="org.crsh.ssh" level="warn"/>

        <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />

        <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />

        <logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration" level="warn"/>

        <logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>

        <logger name="org.thymeleaf" level="warn"/>

    </loggers>

</configuration>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章