MyBatis学习笔记7、日志

7、日志

7.1、日志工厂

如果一个数据库操作出现了异常,日志是很好的排错工具。

不使用sout和debug,使用日志工厂排错

Mybatis 通过使用内置的日志工厂提供日志功能。内置日志工厂将会把日志工作委托给下面的实现之一:

  • SLF4J
  • Apache Commons Logging
  • Log4j 2
  • Log4j 【重要】
  • JDK logging
  • STDOUT_LOGGING 【重要,系统默认的日志,不其他依赖】

7.1.1、使用自带的STDOU_LOGGING

可以在设置setting标签里选择使用哪一种实现(4.5节讲了setting)。在 mybatis-config.xml 中配置:

<!-- 设置 -->
<settings>
	<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

输出了更多的内容:

Opening JDBC Connection
Created connection 516875052.
Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1ecee32c]
==>  Preparing: select * from mybatis.user where id = ? 
==> Parameters: 1(Integer)
<==    Columns: id, name, pwd
<==        Row: 1, dzy, 123456
<==      Total: 1
User{id=1, name='dzy', pwd='123456'}
Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1ecee32c]
Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@1ecee32c]
Returned connection 516875052 to pool.

7.1.2、使用LOG4J

使用log4j需要先导包。

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

在 src/main/resource 下创建配置文件 log4j.propert。

配置详解:https://blog.csdn.net/eagleuniversityeye/article/details/80582140

这里我们配置得简单一点

# 输出debug级别的日志输出到控制台和文件
log4j.rootLogger=DEBUG,console,file

#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold = DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = [%c]-%m%n

# 输出到文件
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File = ./log/dzy.log
log4j.appender.file.MaxFileSize = 10MB
log4j.appender.file.Threshold = DEBUG
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern =%d %p [ %c] - %m %n %d

# 日志输出级别
log4j.logger.org.mybatis = DEBUG
log4j.logger.java.sql = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.ResultSet = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG

setting里设置:使用 LOG4J:

<settings>
	<setting name="logImpl" value="LOG4J"/>
</settings>

然后执行测试用例,有意义的输出结果如下:

[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Opening JDBC Connection
[org.apache.ibatis.datasource.pooled.PooledDataSource]-Created connection 79290250.
[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4b9df8a]
[com.dzy.dao.UserMapper.getUserById]-==>  Preparing: select * from mybatis.user where id = ? 
[com.dzy.dao.UserMapper.getUserById]-==> Parameters: 1(Integer)
[com.dzy.dao.UserMapper.getUserById]-<==      Total: 1
User{id=1, name='dzy', pwd='123456'}
[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4b9df8a]
[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4b9df8a]
[org.apache.ibatis.datasource.pooled.PooledDataSource]-Returned connection 79290250 to pool.

LOG4J 更详细一些,可以设置的东西多一些。

7.2、LOG4J简单使用

首先要导入包:

import org.apache.log4j.Logger;

然后生成日志对象,参数是当前类的反射对象:

static Logger logger = Logger.getLogger(UserDaoTest.class);

测试三种不同等级的日志:

@Test
public void testLog4j() {
	logger.info("info: 使用LOG4J");
	logger.debug("debug: 使用LOG4J");
	logger.error("error: 使用LOG4J");
}

学过日志之后就应该用日志代替system.out.print,比如查询的测试用例改成:

@Test
public void TestSelectById() {
	try (SqlSession session = MybatisUtils.getSqlSession()) {
		UserMapper mapper = session.getMapper(UserMapper.class);
		User user = mapper.getUserById(1);
		logger.info(user);  // 用日志代替输出
	}
}
发布了41 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dzydzy7/article/details/105018264
今日推荐