博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis 日志
阅读量:701 次
发布时间:2019-03-21

本文共 4277 字,大约阅读时间需要 14 分钟。

记录自己在狂神说java中的学习情况,文章里有自己学习的理解和扩展,新手难免有理解偏差或者错误,恳请大佬指正。

MyBatis 日志

日志

日志工厂

如果一个数据库操作,出现了异常,我们需要排错。日志就是最好的助手!

曾经是直接输出或者debug

现在可以使用日志来排错了

还记得Mybatis的setting标签里的logImpl吗,那就是mybatis的日志工厂,logImpl中的属性值有:

  • SLF4J
  • LOG4J【掌握】
  • LOG4J2
  • JDK_LOGGING
  • COMMONS_LOGGING
  • STDOUT_LOGGING【掌握】
  • NO_LOGGING

在mybatis中具体使用哪个日志实现,可以在setting中设定。

准备好在https://github.com/IPostYellow/mybatisStudyRecords 中mybatis-06log中的项目代码。

然后来测试一下日志的使用。

STDOUT_LOGGING输出

在核心配置文件中的settings标签里加入以下xml语句

因为STDOUT_LOGGING是标准日志,不需要额外导入包。运行测试文件可以得到结果:

Opening JDBC ConnectionCreated connection 3583738.Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@36aefa]==>  Preparing: select * from mybatis.user; ==> Parameters: <==    Columns: id, name, pwd<==        Row: 1, 张三, 121231<==        Row: 2, 李四, 121231<==        Row: 3, 王五, 121231<==        Row: 4, 赵七, 77777<==        Row: 5, 李飞, 485615<==      Total: 5User{id=1, name='张三', pwd='121231'}User{id=2, name='李四', pwd='121231'}User{id=3, name='王五', pwd='121231'}User{id=4, name='赵七', pwd='77777'}User{id=5, name='李飞', pwd='485615'}Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@36aefa]Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@36aefa]Returned connection 3583738 to pool.Process finished with exit code 0

LOG4J输出

在核心配置文件中的settings标签里加入以下xml语句

然后运行测试文件,发现报错

Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.logging.LogException: Error setting Log implementation.  Cause: java.lang.NoClassDefFoundError: org/apache/log4j/Priority

说明没有找到对应的日志。

那我们去看看什么是LOG4J

  • Log4j是Apache的一个开源项目,通过使用Log4j,可以控制日志信息输送的目的地为控制台或文件或GUI组件
  • 我们也可以控制每一条日志的输出格式
  • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程
  • 通过一个配置文件来灵活地进行配置,而不需要修改应用的代码

如何使用LOG4J?

1.先导入Log4j包

首先从maven仓库里搜索到log4j,找到对应的maven导入代码

log4j
log4j
1.2.17

在对应项目的pom.xml中把上述log4j包导入代码加入到<dependencies>标签里

2.在CLASSPATH下简历一个log4j.properties,并加入如下内容

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码log4j.rootLogger=DEBUG,console,file#控制台输出的相关设置log4j.appender.console = org.apache.log4j.ConsoleAppenderlog4j.appender.console.Target = System.outlog4j.appender.console.Threshold=DEBUGlog4j.appender.console.layout = org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern=[%c]-%m%n#文件输出的相关设置log4j.appender.file = org.apache.log4j.RollingFileAppenderlog4j.appender.file.File=./log/hj.loglog4j.appender.file.MaxFileSize=10mblog4j.appender.file.Threshold=DEBUGlog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n#日志输出级别log4j.logger.org.mybatis=DEBUGlog4j.logger.java.sql=DEBUGlog4j.logger.java.sql.Statement=DEBUGlog4j.logger.java.sql.ResultSet=DEBUGlog4j.logger.java.sql.PreparedStatement=DEBUG

3.配置log4j为日志实现

4.直接测试运行

[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Opening JDBC Connection[org.apache.ibatis.datasource.pooled.PooledDataSource]-Created connection 3314434.[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@329302][com.hj.dao.UserMapper.getUserList]-==>  Preparing: select * from mybatis.user; [com.hj.dao.UserMapper.getUserList]-==> Parameters: [com.hj.dao.UserMapper.getUserList]-<==      Total: 5User{id=1, name='张三', pwd='121231'}User{id=2, name='李四', pwd='121231'}User{id=3, name='王五', pwd='121231'}User{id=4, name='赵七', pwd='77777'}User{id=5, name='李飞', pwd='485615'}[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@329302][org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@329302][org.apache.ibatis.datasource.pooled.PooledDataSource]-Returned connection 3314434 to pool.Process finished with exit code 0

log4j简单使用

1.在要使用log4j的类中导入包

import org.apache.log4j.Logger;

2.生成一个日志对象,加载参数为当前类的class

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

3.然后就可以使用logger对象来进行人工加入日志信息了

@Testpublic void testLog4j() {
//三种日志级别 logger.info("info:进入了testLog4j"); logger.debug("debug:进入了testLog4j调试"); logger.error("error:进入了testLog4j");}

本章代码

中的mybatis-06log

转载地址:http://ycxez.baihongyu.com/

你可能感兴趣的文章