操作系统:Windows 10 x64
IDE:Spring Tool Suite 4, Version: 4.4.0.RELEASE, Build Id: 201909171436
MyBatis:3.5.3
Log4j:1.2.17
日志的配置思路
1、在 MyBatis 的配置文件中指定使用某种日志。
2、导入相关的 jar 包或引入相关的依赖。
3、配置 log4j.properties 文件。
具体的实现步骤
Maven 项目,结构:
在 pom.xml 文件中引入相关的依赖,主要包括数据库驱动、MyBatis、Log4j。如果不使用单元测试,那么 JUnit 可有可无。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mk</groupId>
<artifactId>mybatis-log4j</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<mysql-connector-java.version>5.1.40</mysql-connector-java.version>
<log4j.version>1.2.17</log4j.version>
<mybatis.version>3.5.3</mybatis.version>
<junit.version>4.12</junit.version>
</properties>
<dependencies>
<!-- mysql-connector-java 数据库驱动。注意:数据库驱动的版本应根据已安装的数据库指定。 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- log4j 日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- JUnit 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
</project>
log4j.properties 日志配置文件:
log4j.rootCategory=INFO, CONSOLE
# 指定某一个包的日志输出级别
log4j.logger.com.mk.mapper=DEGUG
# 控制台追加器
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss:SSS} [%t] %-5p %C %L - %m%n
# 文件追加器(暂时没有使用)
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=G:/log/axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.Threshold=INFO
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{HH:mm:ss:SSS} [%t] %-5p %C %L - %m%n
mybatis.xml 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 使用 Log4j -->
<!-- 参考:https://mybatis.org/mybatis-3/zh/configuration.html#settings -->
<setting name="logImpl" value="LOG4J"/>
</settings>
<!-- 环境配置 -->
<environments default="default">
<environment id="default">
<!-- 事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 扫描 Mapper 接口 -->
<package name="com.mk.mapper" />
</mappers>
</configuration>
com.mk.mapper.FlowerMapper 接口:
package com.mk.mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.mk.pojo.Flower;
public interface FlowerMapper {
@Select("select * from t_flower where id=#{id}")
Flower selectById(@Param("id") Integer id);
}
com.mk.mapper.FlowerMapperTests 测试类:
package com.mk.mapper;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.log4j.Logger;
import org.junit.Test;
public class FlowerMapperTests {
private static final Logger logger = Logger.getLogger(FlowerMapperTests.class);
@Test
public void testlogImpl() {
InputStream is = null;
try {
is = Resources.getResourceAsStream("mybatis.xml");
} catch (IOException e) {
logger.error("Exception: ", e);
}
if (is != null) {
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
Integer id = 2;
session.selectOne("com.mk.mapper.FlowerMapper.selectById", id);
session.close();
}
}
}
运行测试类,控制台输出:
11:13:38:828 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger 143 - ==> Preparing: select * from t_flower where id=?
11:13:38:872 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger 143 - ==> Parameters: 2(Integer)
11:13:38:893 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger 143 - <== Total: 1