项目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等框架集成的话会打印大量没用的日志,从而造成系统性能大大降低。
上一篇: HashMap 和 HashSet的区别
下一篇: 学习spring事务与消息队列