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>
posted @ 2019-07-29 14:37  牛哥聊技术  阅读(4370)  评论(0编辑  收藏  举报