zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    第10组Beta冲刺(4/4)
    第10组Alpha冲刺(4/4)
    第08组 Beta版本演示
    第08组 Beta冲刺(3/4)
    第08组 Beta冲刺(4/4)
    第08组 Beta冲刺(1/4)
    第08组 Beta冲刺(2/4)
    第08组 Alpha事后诸葛亮
    第08组 Alpha冲刺(4/4)
    第08组 Alpha冲刺(3/4)
  • 原文地址:https://www.cnblogs.com/LingCoder/p/11263735.html
Copyright © 2011-2022 走看看