最近查看spring集成log4j源码时,看到spring中推荐使用log4j2来进行log日志记录
spring集成log4j2很简单
只需要引入如下依赖:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.7</version>
</dependency>
再在classpath目录下添加log4j2.xml就可以了,不需要像log4j一样添加web监听器
log4j2.xml例子如下,关于log4j2配置文件的具体配置和读取优先级可以参考log4j2官网配置参考
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.springframework.beans.factory" level="DEBUG"/>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
此时启动web容器,log4j2自然就会启动
注意log4j2中获取log的方法与log4j不同,需要从LogManager中获取
private static final Logger logger = LogManager.getLogger(Class.class);
对于老的log4j项目迁移至log4j2可以添加如下依赖,使得不改代码而使用log4j2
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.7</version>
</dependency>
log4j-1.2-api是log4j与log4j2的联系包
如果需要在项目中打印mybatis的sql语句需要引入slf包:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.7</version>
</dependency>
在log4j2.xml中配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
</appenders>
<loggers>
<logger name="log4j.logger.noModule" level="fatal" additivity="true">
</logger>
<logger name="log4j.logger.org.mybatis.jpetstore" level="trace"
additivity="true">
</logger>
<logger name="log4j.logger.com.opensymphony.xwork2" level="debug"
additivity="true">
</logger>
<logger name="log4j.logger.com.ibatis" level="trace"
additivity="true">
</logger>
<logger name="log4j.logger.com.ibatis.common.jdbc.SimpleDataSource"
level="debug" additivity="true">
</logger>
<logger name="log4j.logger.com.ibatis.common.jdbc.ScriptRunner"
level="debug" additivity="true">
</logger>
<logger
name="log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate"
level="debug" additivity="true">
</logger>
<logger name="log4j.logger.org.mybatis" level="debug"
additivity="true">
</logger>
<logger name="log4j.logger.java.sql" level="debug" additivity="true">
</logger>
<logger name="log4j.logger.java.sql.Connection" level="debug"
additivity="true">
</logger>
<logger name="log4j.logger.java.sql.Statement" level="debug"
additivity="true">
</logger>
<logger name="log4j.logger.java.sql.PreparedStatement" level="debug"
additivity="true">
</logger>
<logger name="log4j.logger.java.sql.ResultSet" level="debug"
additivity="true">
</logger>
<logger name="com.huanrong" additivity="true" level="debug">
</logger>
<root level="info">
<appender-ref ref="Console" />
</root>
</loggers>
</configuration>
如此配置就可以打印sql语句了