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等框架集成的话会打印大量没用的日志,从而造成系统性能大大降低。
相关推荐
本资源包含的是关于`SpringMVC`、`Log4j2`、`Logback`以及`Jackson`的日志脱敏实现源码,提供了多种实现方式,旨在帮助开发者在保障信息安全的同时,充分利用日志进行系统分析。 1. **基于正则表达式的日志脱敏实现...
当我们提到“log4j-slf4j+logback1.3.0”时,这意味着在一个项目中,SLF4J被用作日志的抽象层,而Logback 1.3.0作为实际的日志实现。这样的组合允许开发者利用SLF4J的简单API编写日志代码,同时享受Logback提供的高...
在实际开发中,可以根据项目规模和需求选择是否仿造Log4j,也可以直接使用成熟的日志库,如Logback(Log4j的后继者)或SLF4J(Simple Logging Facade for Java),它们通常提供了更多高级特性并经过了广泛的社区测试...
- **迁移项目**:对于已经使用Log4j的项目,如果想要提升性能,可以考虑迁移到Logback,同时保持SLF4J接口,以确保未来更换日志实现的灵活性。 总的来说,理解Log4j、Logback和SLF4J的特性和交互方式对于Java开发者...
该项目是一款针对研发级日志排查的fast-log工具,采用logback和log4j2日志收集机制,源码包含109个文件,涵盖55个Java源文件、18个JavaScript文件、13个CSS样式文件、5个XML配置文件、4个Map文件、3个HTML文件、1个...
Logback是由log4j创始人设计的另一个开源日志组件,基于slf4j的日志规范实现的框架,性能比log4j要好。 Logback主要分为三个技术模块: logback-core:该模块为其他两个模块奠定了基础。 logback-classic:是log4j...
**日志组件Log4j详解** 日志组件在软件开发中扮演着至关重要的角色,它帮助开发者记录程序运行过程中的信息、错误和调试细节。Log4j是Apache组织提供的一款开源的日志记录工具,广泛应用于Java平台。Log4j的设计...
SLF4J是一个日志抽象层,它为各种日志实现(如logback和log4j)提供了一个统一的API。这样做的好处在于,开发者可以在不修改代码的情况下切换不同的日志实现,提高了代码的可移植性和灵活性。 **Logback:高效日志...
首先,SLF4J是一个日志门面,它为各种日志框架提供了抽象层,如Logback或Log4j。它的主要优点是允许用户在部署时选择适合自己的日志实现,而无需修改代码。SLF4J通过提供一个统一的API,使得更换日志框架变得非常...
使用Slf4j集成Log4j2构建项目日志系统的完美解决方案 Slf4j是简单的日志外观(Facade)模式,它提供了统一的日志接口,使得用户可以选择不同的日志实现。Slf4j的出现使得日志系统的开发变得更加灵活和便捷。Log4j2...
Logback分为三个组件:ch.qos.logback.core(核心库),ch.qos.logback.classic(提供Log4j兼容API),以及ch.qos.logback-access(处理Servlet容器的日志访问)。Logback还包括了强大的自定义布局和过滤器功能,...
LogBack 是一个日志框架,它是 Log4j 的后继者,由 Log4j 的创始人 Ceki Gülcü 与 Sébastien Pennec 共同创建。本文将探讨十个理由,解释为什么你应该从 log4j 迁移到 LogBack。 1. **性能提升**:LogBack 在...
Log4j是一款广泛使用的Java日志框架,它为应用程序提供了灵活的日志记录功能。这个“log4j示例项目”旨在帮助开发者理解和使用Log4j,通过该项目,我们可以深入学习Log4j的配置、使用方法以及其在实际开发中的应用。...
2. log4j2 的配置详解,JDBC 配置,CloseableThreadContext 的使用(自定义输出日志文件 例如 logback MDC) 3.logback 的XML配置与使用,MDC的使用,SiftingAppender,DBAppender(c3p0,druid) 详细查看代码:README.md ...
在Java开发中,日志组件扮演着至关重要的角色,它帮助开发者记录程序运行时的信息,以...通过学习`关于日志的处理_jdkLog_commonLog_log4j`这个文档,你将深入理解这些组件的原理和实践,为你的Java开发之路添砖加瓦。
**SLF4J 是一个日志门面,它为各种日志框架提供了统一的接口,如Log4j、Logback等。这样做的好处是,开发者可以在不修改代码的情况下更换底层的日志实现,只需改变依赖即可。** **Logback 是 SLF4J 的默认实现,由 ...
总之,将Spring的日志配置为Log4j,涉及到引入Log4j库、编写`log4j.properties`配置文件、以及在Spring配置文件中声明使用Log4j。理解这些步骤和配置项对于优化日志记录,排查问题以及监控系统运行状态至关重要。
与Log4j 1.x相比,Log4j2在设计上进行了重大改进,并解决了Logback等其他日志框架中存在的某些体系结构问题。 #### 特性概述 1. **审计功能**:Log4j2设计时考虑到了审计需求,这意味着即使在配置更新过程中,它也...
在项目中,我们需要修改Spring Boot的默认配置,指定使用Log4j2,并在项目的配置文件中(如`log4j2.xml`或`log4j2.json`)定义日志级别、输出格式和目标位置。 在项目中,"springBootMybatis"这个压缩包文件可能...
### 日志框架总结:JUL、Log4j、Log4j2、Logback及门面技术 #### 日志框架与日志门面的区别 在软件开发过程中,日志记录是必不可少的一部分,它可以帮助开发者追踪应用运行的状态,及时发现并解决出现的问题。日志...