`

项目logback日志组件更换为log4j2日志组件步骤及注意事项

阅读更多

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等框架集成的话会打印大量没用的日志,从而造成系统性能大大降低。

分享到:
评论
1 楼 rshw123456 2017-03-15  
配置了没用,不打印sql的参数

相关推荐

    springmvc log4j2 logback 注解 jackson 日志脱敏实现源码

    本资源包含的是关于`SpringMVC`、`Log4j2`、`Logback`以及`Jackson`的日志脱敏实现源码,提供了多种实现方式,旨在帮助开发者在保障信息安全的同时,充分利用日志进行系统分析。 1. **基于正则表达式的日志脱敏实现...

    日志 log4j-slf4j+logback1.3.0

    当我们提到“log4j-slf4j+logback1.3.0”时,这意味着在一个项目中,SLF4J被用作日志的抽象层,而Logback 1.3.0作为实际的日志实现。这样的组合允许开发者利用SLF4J的简单API编写日志代码,同时享受Logback提供的高...

    日志组件-仿log4j的配置

    在实际开发中,可以根据项目规模和需求选择是否仿造Log4j,也可以直接使用成熟的日志库,如Logback(Log4j的后继者)或SLF4J(Simple Logging Facade for Java),它们通常提供了更多高级特性并经过了广泛的社区测试...

    log4j logback slf4j

    - **迁移项目**:对于已经使用Log4j的项目,如果想要提升性能,可以考虑迁移到Logback,同时保持SLF4J接口,以确保未来更换日志实现的灵活性。 总的来说,理解Log4j、Logback和SLF4J的特性和交互方式对于Java开发者...

    基于logback和log4j2日志系统的fast-log研发级日志设计源码

    该项目是一款针对研发级日志排查的fast-log工具,采用logback和log4j2日志收集机制,源码包含109个文件,涵盖55个Java源文件、18个JavaScript文件、13个CSS样式文件、5个XML配置文件、4个Map文件、3个HTML文件、1个...

    Logback日志系统文件

    Logback是由log4j创始人设计的另一个开源日志组件,基于slf4j的日志规范实现的框架,性能比log4j要好。 Logback主要分为三个技术模块: logback-core:该模块为其他两个模块奠定了基础。 logback-classic:是log4j...

    log4j日志组件

    **日志组件Log4j详解** 日志组件在软件开发中扮演着至关重要的角色,它帮助开发者记录程序运行过程中的信息、错误和调试细节。Log4j是Apache组织提供的一款开源的日志记录工具,广泛应用于Java平台。Log4j的设计...

    Logback 实例,log4,slf4,logback日志输出 demo

    SLF4J是一个日志抽象层,它为各种日志实现(如logback和log4j)提供了一个统一的API。这样做的好处在于,开发者可以在不修改代码的情况下切换不同的日志实现,提高了代码的可移植性和灵活性。 **Logback:高效日志...

    tomcat9 slf4j+log4j2 写日志.zip

    首先,SLF4J是一个日志门面,它为各种日志框架提供了抽象层,如Logback或Log4j。它的主要优点是允许用户在部署时选择适合自己的日志实现,而无需修改代码。SLF4J通过提供一个统一的API,使得更换日志框架变得非常...

    使用Slf4j集成Log4j2构建项目日志系统的完美解决方案.docx

    使用Slf4j集成Log4j2构建项目日志系统的完美解决方案 Slf4j是简单的日志外观(Facade)模式,它提供了统一的日志接口,使得用户可以选择不同的日志实现。Slf4j的出现使得日志系统的开发变得更加灵活和便捷。Log4j2...

    slf4j+logback 于log4j+commons-logging大PK

    Logback分为三个组件:ch.qos.logback.core(核心库),ch.qos.logback.classic(提供Log4j兼容API),以及ch.qos.logback-access(处理Servlet容器的日志访问)。Logback还包括了强大的自定义布局和过滤器功能,...

    十个 log4j 转移到LogBack的理由

    LogBack 是一个日志框架,它是 Log4j 的后继者,由 Log4j 的创始人 Ceki Gülcü 与 Sébastien Pennec 共同创建。本文将探讨十个理由,解释为什么你应该从 log4j 迁移到 LogBack。 1. **性能提升**:LogBack 在...

    log4j示例项目

    Log4j是一款广泛使用的Java日志框架,它为应用程序提供了灵活的日志记录功能。这个“log4j示例项目”旨在帮助开发者理解和使用Log4j,通过该项目,我们可以深入学习Log4j的配置、使用方法以及其在实际开发中的应用。...

    log4j,log4j2,logback 日志插件的使用例子

    2. log4j2 的配置详解,JDBC 配置,CloseableThreadContext 的使用(自定义输出日志文件 例如 logback MDC) 3.logback 的XML配置与使用,MDC的使用,SiftingAppender,DBAppender(c3p0,druid) 详细查看代码:README.md ...

    log日志组件总结

    在Java开发中,日志组件扮演着至关重要的角色,它帮助开发者记录程序运行时的信息,以...通过学习`关于日志的处理_jdkLog_commonLog_log4j`这个文档,你将深入理解这些组件的原理和实践,为你的Java开发之路添砖加瓦。

    logback+self4j 进行日志记录

    **SLF4J 是一个日志门面,它为各种日志框架提供了统一的接口,如Log4j、Logback等。这样做的好处是,开发者可以在不修改代码的情况下更换底层的日志实现,只需改变依赖即可。** **Logback 是 SLF4J 的默认实现,由 ...

    spring日志配置为log4j

    总之,将Spring的日志配置为Log4j,涉及到引入Log4j库、编写`log4j.properties`配置文件、以及在Spring配置文件中声明使用Log4j。理解这些步骤和配置项对于优化日志记录,排查问题以及监控系统运行状态至关重要。

    Log4j2简介及与Log4j效率对比

    与Log4j 1.x相比,Log4j2在设计上进行了重大改进,并解决了Logback等其他日志框架中存在的某些体系结构问题。 #### 特性概述 1. **审计功能**:Log4j2设计时考虑到了审计需求,这意味着即使在配置更新过程中,它也...

    springboot+mybatis+log4j2

    在项目中,我们需要修改Spring Boot的默认配置,指定使用Log4j2,并在项目的配置文件中(如`log4j2.xml`或`log4j2.json`)定义日志级别、输出格式和目标位置。 在项目中,"springBootMybatis"这个压缩包文件可能...

    日志框架总结JUL、Log4j、Log4j2、Logback以及门面技术

    ### 日志框架总结:JUL、Log4j、Log4j2、Logback及门面技术 #### 日志框架与日志门面的区别 在软件开发过程中,日志记录是必不可少的一部分,它可以帮助开发者追踪应用运行的状态,及时发现并解决出现的问题。日志...

Global site tag (gtag.js) - Google Analytics