log4j从1到2有不少的变化和增强。所以考虑将项目中的log4j1更换成log4j2,同时仍然使用slf4j的适配,更换过程如下。
1、maven的改变,移除log4j1的依赖,添加log4j2的依赖,替换完成后,maven的最终文件为
maven配置 写道
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.9.1</version>
</dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.9.1</version>
</dependency>
<!-- 异步日志依赖 -->
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.9.1</version>
</dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.9.1</version>
</dependency>
<!-- 继续保持使用slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.25</version>
</dependency>
同时请使用jdk7及以上。
2、如果使用servlet3以上,请去除web.xml中关于Log4j的配置项。log4j2可自动识别配置文件。同时在web的根目录下,加入一个log4j2.xml的配置文件。
log4j2简单配置文件 写道
<?xml version="1.0" encoding="UTF-8"?>
<!-- 根据monitorInterval会自动检测该配置文件并更新日志配置 -->
<Configuration status="off" monitorInterval="1800">
<!-- 属性文件配置,后续可以使用${}格式调用 -->
<properties>
<property name="LOG_HOME">/usr/scm/logs/</property>
<property name="ERROR_LOG_FILE_NAME">scm</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p (%F:%L) - %m%n" />
</Console>
<RollingRandomAccessFile name="ErrorLog"
fileName="${LOG_HOME}/${ERROR_LOG_FILE_NAME}.log"
filePattern="${LOG_HOME}/${ERROR_LOG_FILE_NAME}.log.%d{yyyy-MM-dd}.gz">
<PatternLayout
pattern="%d %-5p (%F:%L) - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<!-- 3rdparty Loggers -->
<logger name="org.springframework" level="warn"></logger>
<!-- 打印SQL仅需指定dao所在bao的debug级别,其他配置已不需要,但不支持通配符 -->
<logger name="com.scm" level="info" includeLocation="true" additivity="false">
<appender-ref ref="ErrorLog"/>
<appender-ref ref="Console"/>
</logger>
<root level="info" includeLocation="true">
<appender-ref ref="Console"/>
</root>
</Loggers>
</Configuration>
<!-- 根据monitorInterval会自动检测该配置文件并更新日志配置 -->
<Configuration status="off" monitorInterval="1800">
<!-- 属性文件配置,后续可以使用${}格式调用 -->
<properties>
<property name="LOG_HOME">/usr/scm/logs/</property>
<property name="ERROR_LOG_FILE_NAME">scm</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p (%F:%L) - %m%n" />
</Console>
<RollingRandomAccessFile name="ErrorLog"
fileName="${LOG_HOME}/${ERROR_LOG_FILE_NAME}.log"
filePattern="${LOG_HOME}/${ERROR_LOG_FILE_NAME}.log.%d{yyyy-MM-dd}.gz">
<PatternLayout
pattern="%d %-5p (%F:%L) - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<!-- 3rdparty Loggers -->
<logger name="org.springframework" level="warn"></logger>
<!-- 打印SQL仅需指定dao所在bao的debug级别,其他配置已不需要,但不支持通配符 -->
<logger name="com.scm" level="info" includeLocation="true" additivity="false">
<appender-ref ref="ErrorLog"/>
<appender-ref ref="Console"/>
</logger>
<root level="info" includeLocation="true">
<appender-ref ref="Console"/>
</root>
</Loggers>
</Configuration>
3、打印mybatis的sql,如上图所示,仅仅需要指定dao所在的文件夹即可。在Mybatis的配置文件中可以继续使用slfj4impl。
<setting name="logImpl" value="SLF4J"/> 无需改成log4j2的实现。
4、如果需要更加深刻的了解log4j2的事件级别和配置级别,以及更复杂的配置,可参考log4j2的官方文档。
相关推荐
【标题】"springMvc+mybaties+slf4j" 涉及的技术栈是企业级应用开发中常见的组合,主要包括Spring MVC、MyBatis和SLF4J。这三者分别是Spring框架的Web模块、轻量级持久层框架和日志门面。 【Spring MVC】是Spring...
2. 添加依赖:除了`log4j-1.2.15.jar`之外,还需要添加`slf4j-log4j12-1.6.4.jar`,这个桥接包使得SLF4J能够使用Log4j进行日志记录。 3. 更新日志器设置:在Java类中,使用SLF4J的日志器接口,同样替换`...
【标题】"IDEA下springboot+mybatis+log4j"所涉及的知识点主要集中在Java开发环境的集成、Spring Boot框架的应用、MyBatis持久层框架的使用以及日志管理工具Log4j和SLF4J的配置与实践。 首先,IntelliJ IDEA(简称...
5. 其他依赖库:如log4j或slf4j用于日志记录,asm、cglib等用于AOP代理。 整合过程大致如下: 1. 引入依赖:在项目的pom.xml或build.gradle文件中添加相关库的依赖。 2. 配置Spring:在Spring的配置文件(如...
- 更新pom.xml文件,添加Spring、SpringMVC、MyBatis以及相关依赖库,例如:MySQL驱动、SLF4J、Log4j等。 8. **MyBatis配置** - 编写MyBatis的Mapper接口和XML配置文件,定义SQL语句。 9. **业务逻辑层** - ...
如标题和描述所提及,我们需要`log4j-api-2.3`和`slf4j-api-1.7.25`这两个日志处理库,它们是Spring和MyBatis日志记录的基础。`log4j-core-2.3.jar`是Log4j的具体实现,而`log4j-1.2.17.jar`则是旧版本的Log4j,用于...
slf4j-log4j12-1.7.25.jar 2.Spring所需要的jar包: spring-bean.5.0.2.jar spring-context-5.0.2.jar spring-core-5.0.2.jar spring-expression-5.0.2.jar commons-logging-1.2.jar aopalliance-1.0.jar ...
为了使SSM正常工作,可能还需要一些其他的依赖,如`log4j`日志框架,`commons-logging`,以及可能的`slf4j-api`和`slf4j-log4j12`,它们提供了日志记录功能。还有可能包含`commons-dbcp`或`HikariCP`等数据库连接池...
- 使用`log4j.properties` 来配置日志信息。 - Maven引入所需的JAR包。 **POM.xml文件示例** ```xml <spring.version>4.0.2.RELEASE</spring.version> <mybatis.version>3.2.6</mybatis.version> <slf4j....
7. **slf4j-log4j12-1.7.25.jar**:Simple Logging Facade for Java (SLF4J)的日志适配器,允许将SLF4J与log4j结合使用。 8. **ant-launcher-1.9.6.jar**:Apache Ant的启动器,可能在构建过程中用到。 9. **slf4j...
4. **日志配置**:引入log4j和SLF4J的依赖,配置log4j.properties或log4j.xml,定义日志级别、输出格式和目的地。 5. **数据库准备**:如`lhb_test.sql`,导入数据库脚本,建立所需的表结构和初始数据。 6. **业务...
SSM(Spring、SpringMVC、MyBatis)与Apache Shiro、SLF4J以及Logback是Java Web开发中的重要框架和工具,它们在构建安全、高效且可维护的Web应用方面起着关键作用。这里我们将深入探讨这些技术的核心概念、功能以及...
- `log4j`或`slf4j`:日志处理库,用于记录应用运行过程中的信息。 - `commons-dbcp`或`HikariCP`:连接池库,管理和复用数据库连接。 - `mysql-connector-java`:MySQL数据库的驱动,如果你的项目连接的是MySQL...
- `log4j.jar` 或 `slf4j-api.jar + slf4j-log4j12.jar`:日志处理库,用于记录程序运行中的信息。 - `jstl.jar` 和 `standard.jar`:用于处理JSP页面的标签库。 - `commons-dbcp.jar` 或 `HikariCP.jar`:连接池,...
- 其他可能用到的jar包:如`log4j`, `slf4j`, `c3p0`(连接池), `druid`(连接池)等。 #### 二、配置文件详解 **2.1 web.xml** `web.xml`文件位于`WEB-INF`目录下,它是Web应用的部署描述符。该文件用于配置过滤器、...
SSM框架是Java Web开发中常用的三大框架Spring、Spring MVC和MyBatis的组合,而slf4j(Simple Logging Facade for Java)则是一种日志抽象层,它允许我们选择不同的日志实现,如Logback或Log4j。Gradle作为现代的...
- **日志**:引入如Log4j或SLF4J等日志框架,记录应用运行过程中的信息,便于问题排查。 - **安全控制**:Spring Security可以提供认证和授权功能,保护应用的安全。 - **单元测试**:JUnit和Mockito等工具进行单元...
常见的日志库有Log4j、SLF4J和Logback,对应的jar包也需要引入。 8. **测试支持**:为了进行单元测试和集成测试,我们需要引入`spring-test.jar`和`junit.jar`。 在整合过程中,我们还需要编写相应的配置文件(如`...
/13spring4_mybatis2/lib/slf4j-log4j12-1.7.5.jar /13spring4_mybatis2/lib/spring-aop-4.1.6.RELEASE.jar /13spring4_mybatis2/lib/spring-aspects-4.1.6.RELEASE.jar /13spring4_mybatis2/lib/spring-beans-...