mybatis log


mybatis 的日志实现

1、日志工厂

设置具体的日志实现在mybatis-config.xml配置文件中setting标签中的logImpl属性

分别有:

  • SLF4J
  • LOG4J (常用)
  • LOG4J2 (log4j升级版,在不同情况下性能不同)
  • JDK_LOGGING (JDK集成的默认日志实现)
  • COMMONS_LOGGING
  • STDOUT_LOGGING (不需要配置拿来就能用的日志)
  • NO_LOGGING (不使用任何日志)

先使用STDOUT_LOGGING这个最简单的日志实现体验一下功能

首先,在mybatis-config.xml配置文件中设置setting标签中的logImpl属性

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

运行一下,看一下日志输出了哪些具体东西:
image
可以看到输出了许多信息:

  • Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter(使用的日志实现)
  • Opening JDBC Connection (打开一个JDBC连接)
  • Created connection 1293618474. (创建一个连接)
  • Setting autocommit to false on JDBC Connection(设置自动提交为false)
  • Preparing: select * from user where id=? (预编译的语句)
  • Parameters: 1(Integer) (参数的数量以及类型)
  • Columns: id, user_name, user_password (要查询的字段名)
  • Row: 1, 陈修行_new, 5555 (具体的值)
  • Total: 1 (共计为1)

可以看到输出的信息还是十分全面的。不过做不到许多自定义的功能

2、log4j

为了更全面的日志功能,和自由的自定义调试输出,log4j来了

先把logImpl的值改为LOG4J

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

然后导入log4j依赖

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

因为log4j需要一个配置文件来规定具体的行为,所以我们还需要一个log4j.properties

#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
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/Test.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

#日志输出级别
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

P.S. log4j在此仅作简单的应用 关于log4j配置文件更详细的资料参考具体文章

运行:
image
可以看到输出的结果与上一个STDOUT_LOGGING基本一致,同时在./log/Test.log的位置生成了一篇同样的日志
image

3、在调试中使用log4j

有了如此工具,我们就不用在每次调试的时候在控制台使用System.out输出了,通过简单的一行代码就可以在各种类中使用日志输出

public class MyTest {
    static Logger logger = Logger.getLogger(MyTest.class);
    
    @Test
    public void log4jTest(){
        logger.info("info:进入了log4jTest");
        logger.debug("debug:进入了log4jTest");
        logger.error("error:进入了log4jTest");
    }
}

不同的方法代表了不同的级别,在项目合适的地方加上不同级别的日志输出是一个必不可少的行为。

4、总结

如此 log4j 就算可以简单地使用了,在后续的项目中会是一个得力的工具


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM