spring整合LOG4J2日志


POM文件


       <!-- Log Begin -->
       <slf4j.version>1.7.24</slf4j.version>
       <log4j2.version>2.8.2</log4j2.version>
       <jcl.over.version>1.7.6</jcl.over.version>
       <jul.over.version>1.7.6</jul.over.version>
       <log4j12.api.version>2.8.2</log4j12.api.version>
       <!-- Log End -->

<!-- Logger start -->

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <dependency> <!-- 橋接:告訴Slf4j使用Log4j2 -->
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>${log4j2.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>${log4j2.version}</version>
        </dependency>

        <dependency> <!-- 橋接:jcl,不是升級不需要 -->
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${jcl.over.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId><!-- 橋接:jul,不是升級不需要 -->
            <artifactId>jul-to-slf4j</artifactId>
            <version>${jul.over.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency><!--適配log4j 1.x,不是升級不需要 -->
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-1.2-api</artifactId>
            <version>${log4j12.api.version}</version>
        </dependency>

        <!-- Logger end -->

配置文件 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF" monitorInterval="30">
    <properties>
        <property name="appName">XXXXX</property>
        <property name="LOG_HOME">${sys:catalina.home}/logs/XXXXX/${appName}</property>
        <!--<property name="LOG_HOME">d:/test/logs/XXXXX/${appName}</property>-->
        <property name="errorfilepath">${LOG_HOME}/error.log</property>
        <property name="layout">%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5p %c{1.} %l %F - %m%n</property>
        <property name="layout2">%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level %c{3.} %L %M - %msg%xEx%n</property>
        <property name="layout3">%d{yyyy/MM/dd HH:mm:ss.sss} %-5level %class{36} %L %M - %msg%xEx%n</property>
    </properties>
    <!--  定義所有的appenders (輸出目的地) -->
    <appenders>
        <!-- 控制台輸出的配置 -->
        <Console name="Console" target="SYSTEM_OUT">
            <!-- 控制台只輸出level級別及以上的信息(onMatch),其他的直接拒絕(onMismatch) ,設置后可屏蔽具體logger的設定-->
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${layout2}"/>
        </Console>
        <!-- 文件打印所有信息,適合臨時測試使用 ,append="true" 指定追加內容到文件 -->
        <File name="log" fileName="${LOG_HOME}/test-temp.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!--fileName:當前日期文件的位置和名稱
        filePattern:指定當發生rolling時,文件的轉移和重命名規則
        SizeBasedTriggeringPlicy:指定文件體積大於size,出發rolling
        DefaultRolloverStrategy:指定最多保存的文件數,默認每個文件夾7個
        TimeBasedTriggeringPolicy:該配置需要和filePattern使用%d{yyyy-MM-dd HH-mm}-%i,最小粒度是分鍾,則單位為分鍾,表示每分鍾生成一個新文件
        注意:可以通過ThresholdFilter過濾日志級別,可以實現按照不同的日志級別保存到不同的文件中
         -->
        <RollingFile name="RollingFile" fileName="${LOG_HOME}/app.log"
            filePattern="${LOG_HOME}/app.log.%d{yyyy-MM-dd-HH}-%i.log.gz">
            <!--filePattern="${errorfilepath}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd HH-mm}-%i.log.gz" -->
            <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${layout}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB"/>
                <!-- 每小時文件rollover -->
                <CronTriggeringPolicy schedule="0 0 * * * ?"/>
                <!--TimeBasedTriggeringPolicy表示按照時間間隔來進行日志文件的滾動,間隔單位可以是分鍾、小時,具體需要根據filePattern的格式來進行判別;-->
                <!--例如filePattern="e:/app-%d{yyyy-MM-dd_HH-mm}-%i.out",則表示mm(分鍾)為單位;-->
                <!--<TimeBasedTriggeringPolicy interval="1" modulate="true"/>-->


            </Policies>

            <!-- DefaultRolloverStrategy屬性如不設置,則默認為最多同一文件夾下7個文件,這里設置了20 -->
            <DefaultRolloverStrategy max="20">
                <!-- 刪除策略,basePath表示根文件夾,maxDepth表示路徑深度,0表示根目錄自身,默認1,僅僅根目錄下的文件可訪問,刪除無法恢復請慎重-->
                <Delete basePath="${LOG_HOME}" maxDepth="0">
                    <IfFileName glob="app.log*.log.gz"/>
                    <!-- 刪除30天前的數據-->
                    <ifLastModified age="30d"/>
                    <!-- 訪問文件數,保留最新10個文件 exceeds表示刪除的文件數量閾值-->
                    <IfAccumulatedFileCount exceeds="10"/>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>

    </appenders>
    <loggers>

        <root level="INFO">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFile"/>
        </root>

        <logger name="org.springframework" level="ERROR" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>

        <logger name="com.baomidou.mybatisplus" level="INFO" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>
        <logger name="log4j.logger.com.ibatis" level="DEBUG" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>
        <logger name="com.XXXXX" level="DEBUG" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>
        <logger name="com.XXXXX.XXXXXX" level="DEBUG" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>
        <logger name="com.XXXXX.XXXXX.XXXXX" level="DEBUG" additivity="false" >
            <appender-ref ref="Console"/>
        </logger>

        <!--additivity=false 表示不往上繼承root,因此沒有打印root策略的日志-->
        <!--<logger name="org.springframework.core" level="INFO" additivity="false">-->
            <!--<appender-ref ref="Console"/>-->
        <!--</logger>-->
    </loggers>
</configuration>


免責聲明!

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



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