欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

项目logback日志组件更换为log4j2日志组件步骤及注意事项 博客分类: log4j2 log4j2 

程序员文章站 2024-03-13 08:21:39
...

1.将项目当前maven中的logback相关依赖exclude掉

 

<exclusions>
	<exclusion>
		<artifactId>logback-access</artifactId>
		<groupId>ch.qos.logback</groupId>
	</exclusion>
	<exclusion>
		<artifactId>logback-core</artifactId>
		<groupId>ch.qos.logback</groupId>
	</exclusion>
	<exclusion>
		<artifactId>logback-classic</artifactId>
		<groupId>ch.qos.logback</groupId>
	</exclusion>
</exclusions>

 

2.添加log4j的maven依赖

 

<!-- long4j 2.3已将写入锁的问题解决 -->
<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-core</artifactId>
	<version>2.3</version>
</dependency>
<!-- com.lmax/disruptor -->
<dependency>
	<groupId>com.lmax</groupId>
	<artifactId>disruptor</artifactId>
	<version>3.2.1</version>
</dependency>

 

3.在classpath下添加log4j2.xml配置文件

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="WARN">
	
	<properties>
		<property name="FILE_LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %X{user.username} %X{req.requestURI} %X{req.queryString} %l - %msg%n</property>
		<property name="CONSOLE_LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %X{user.username} %X{req.requestURI} %X{req.queryString} %l - %msg%n</property>
		<property name="LOG_PATH">/home/myt/log/billing-mall</property>
	</properties>
	
	<appenders>
		<!--这个输出控制台的配置-->
<!-- 		<Console name="Console" target="SYSTEM_OUT"> -->
<!-- 			控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<!-- 			<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> -->
<!-- 			<PatternLayout pattern="${CONSOLE_LOG_PATTERN}" /> -->
<!-- 		</Console> -->
		
		<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->
		<File name="File" fileName="${LOG_PATH}/test.log" append="false">
            <PatternLayout pattern="${FILE_LOG_PATTERN}"/>
        </File>
        
        <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
		<RollingFile name="RollingFile" fileName="${LOG_PATH}/billingMall.log" filePattern="${LOG_PATH}/billingMall.%d{yyyyMMdd}.%i.log.gz">
			<PatternLayout pattern="${FILE_LOG_PATTERN}" />
			<Policies>
				<SizeBasedTriggeringPolicy size="50MB" />
			</Policies>
			<DefaultRolloverStrategy max="30" />
		</RollingFile>
	</appenders>
	<loggers>
		<logger includeLocation="true" name="org.hibernate.type.descriptor.sql.BasicBinder"  level="ERROR" additivity="false"/>  
	    <logger includeLocation="true" name="org.hibernate.type.descriptor.sql.BasicExtractor"  level="ERROR" additivity="false"/>  
	    <logger includeLocation="true" name="org.hibernate.SQL" level="ERROR" additivity="false"/>  
	    <logger includeLocation="true" name="org.hibernate.engine.QueryParameters" level="ERROR" additivity="false"/>  
	    <logger includeLocation="true" name="org.hibernate.engine.query.HQLQueryPlan" level="ERROR" additivity="false"/>  
	
		<root level="ERROR" includeLocation="true">
<!-- 			<appender-ref ref="Console" /> -->
<!-- 			<appender-ref ref="File" /> -->
			<appender-ref ref="RollingFile" />
		</root>
	</loggers>
	
</configuration>

 

4.项目全文查找(logback模式导入的包)

 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

全部替换为:(log4j 2模式导入的包)

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;

PS: (log4j 1模式导入的包)
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

 

5.在应用服务器tomcat中增加启动参数:

 

JAVA_OPTS="-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector"

(PS:这里如果加了启动参数,那么在maven依赖中需要添加disruptor的jar包依赖且版本需要3.0以上)

 

6.注意事项:

 

  在启动项目的时候如果应用下面有logback相关的jar包,如logback-classic-1.1.2.jar,logback-core-1.1.2.jar,必须要全部删除掉,否则logback会和log4j冲突并强制将tomcat应用服务器的控制台日志级别降到最低,如果项目本身与spring+hibernate等框架集成的话会打印大量没用的日志,从而造成系统性能大大降低。

相关标签: log4j2