log4j2.xml配置详细遇到坑

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off" monitorInterval="1800">
    <properties>
        <property name="LOG_HOME">/opt/apache-tomcat-9.0.6/logs</property>
<!--        <property name="LOG_HOME">/Users/lhq/apache-tomcat-9.0.6/logs</property>-->
        <property name="FILE_NAME">mylog</property>
    </properties>
   
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
<!--        <File name="File" fileName="${LOG_HOME}/${FILE_NAME}.log" >-->
<!--            <PatternLayout>-->
<!--                <Pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n</Pattern>-->
<!--            </PatternLayout>-->
<!--        </File>-->
        <!-- 注意File和RollingFile不能同时存在,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
        <RollingFile name="RollingFileInfo" fileName="${LOG_HOME}/${FILE_NAME}.log"
                     filePattern="${LOG_HOME}/${FILE_NAME}-%d{MM-dd-yyyy}-%i.log">
            <!--控制台只输出info及以上级别的信息(onMatch),其他的直接拒绝(onMismatch),根据这个可以特殊定制化-->
            <!--<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>-->
            <PatternLayout>
                <Pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n</Pattern> <!--定义日志模板,输出的格式-->
            </PatternLayout>
            <Policies>
                <!--按天进行分割日志-->
                <TimeBasedTriggeringPolicy/>
                <!--按文件占用空间进行分割日志-->
                <SizeBasedTriggeringPolicy size="20MB"/>
            </Policies>
            <!-- 当日文件数量不能超过100个,超过100个会被覆盖-->
            <DefaultRolloverStrategy max="100">
                <Delete basePath="${LOG_HOME}" maxDepth="1">
                    <IfFileName glob="*/${FILE_NAME}-%d{MM-dd-yyyy}-%i.log" />
                    <!--保留30天以内日志文件-->
                    <IfLastModified age="30d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>

    </Appenders>

    <Loggers>
        <Logger name="com.hsaudio" level="DEBUG" additivity="true">
            <AppenderRef ref="Console"/>
        </Logger>
        <Root level="error">
            <AppenderRef ref="RollingFileInfo" level="ERROR"/>
        </Root>
    </Loggers>
</Configuration>
 

这里遇到一个坑,Unable to invoke factory method in class class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile.

Appenders中File和RollingFile节点不同同时存在,否者初始化日志工程时报错。

集成需要的maven,这个集成spring mvc 

  <properties>
  		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!--依赖版本 -->
		<spring.version>4.3.7.RELEASE</spring.version>
		<log4j2.version>2.8.2</log4j2.version>
		<slf4j.version>1.7.25</slf4j.version>
		<mybatis-spring.version>1.3.1</mybatis-spring.version>
		<fastjson.version>1.2.31</fastjson.version>
  </properties>
  <dependencies>
<!--日志 begin -->
		<!-- slf4j config start -->
		<dependency>
		  <groupId>org.slf4j</groupId>
		  <artifactId>slf4j-api</artifactId>
		  <version>${slf4j.version}</version>
		</dependency>
		<dependency>
		  <groupId>org.slf4j</groupId>
		  <artifactId>jcl-over-slf4j</artifactId>
		  <version>${slf4j.version}</version>
		</dependency>
		<!-- slf4j config end -->
		<!-- 桥接:告诉Slf4j使用Log4j2 -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-slf4j-impl</artifactId>
			<version>${log4j2.version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- 桥接:告诉commons logging使用Log4j2 -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-jcl</artifactId>
			<version>${log4j2.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>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-web</artifactId>
			<version>${log4j2.version}</version>
		</dependency>


		<!--日志 end -->
  </dependencies>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值