MyBatis 使用 Log4j 实现日志输出

操作系统: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 文件中引入相关的依赖,主要包括数据库驱动MyBatisLog4j。如果不使用单元测试,那么 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
发布了36 篇原创文章 · 获赞 0 · 访问量 1878

猜你喜欢

转载自blog.csdn.net/qq_29761395/article/details/103611423