Log4j 是什么

Log4j 是由 Apache 提供的开源日志框架,用于帮助用户处理日志信息。

Log4j 能将日志信息分级打印和存储,而且提供了日志不同的存储方式,我们可以将日志发送到控制台,或者文件,或者数据库中等。

日志信息分级如下:(以轻到重)

  • DEBUG:调试
  • INFO:信息
  • WARN:警告
  • ERROR:错误
  • FATAL:致命

如果打印 ERROR 和 FATAL 这两个日志级别,说明系统存在严重问题,必须解决或修复。

Log4j 通过一个 log4j.properties 日志配置文件设置日志。

MyBatis 开启调试日志信息

MyBatis 框架内部也是使用 Log4j 打印日志的,但由于没有日志配置文件设置日志,所以一般无法显示DEBUG级日志信息。那么,我们可以在 Java 工程的 src 根目录下创建 log4j.properties 文件,如下:

log4j.rootLogger=DEBUG,A1
log4j.logger.org.apache=DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

重新执行 MyBatisDemo 结果如下:

2020-06-19 11:11:24,656 [main] [org.apache.ibatis.logging.LogFactory]-[DEBUG] Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
2020-06-19 11:11:24,681 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2020-06-19 11:11:24,682 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2020-06-19 11:11:24,682 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2020-06-19 11:11:24,682 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] PooledDataSource forcefully closed/removed all connections.
2020-06-19 11:11:24,882 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Opening JDBC Connection
2020-06-19 11:11:25,333 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Created connection 1076496284.
2020-06-19 11:11:25,333 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@402a079c]
2020-06-19 11:11:25,337 [main] [mapper.UserMapper.selectUserByAge]-[DEBUG] ==> Preparing: select * from tb_user where age > ?
2020-06-19 11:11:25,405 [main] [mapper.UserMapper.selectUserByAge]-[DEBUG] ==> Parameters: 20(Integer)
2020-06-19 11:11:25,450 [main] [mapper.UserMapper.selectUserByAge]-[DEBUG] <== Total: 2
[entity.UserEntity{id=1, userName='zs', password='123456', name='张三', age=22, sex=1, birthday=Sun Sep 02 00:00:00 IRKST 1990, created='2020-06-17 09:30:58.0', updated='2020-06-17 09:30:58.0'}, entity.UserEntity{id=2, userName='ls', password='123456', name='李四', age=24, sex=1, birthday=Sun Sep 05 00:00:00 IRKST 1993, created='2020-06-17 09:30:58.0', updated='2020-06-17 09:30:58.0'}]
2020-06-19 11:11:25,451 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@402a079c]
2020-06-19 11:11:25,452 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@402a079c]
2020-06-19 11:11:25,452 [main] [org.apache.ibatis.datasource.pooled.PooledDataSource]-[DEBUG] Returned connection 1076496284 to pool. Process finished with exit code 0

这样我们就开启了 MyBatis 框架的 log4j 调试信息开关,由于增加了 Debug 调试信息,打印的内容比之前就多很多。我们从这些调试信息中可以清晰的看到 MyBatis 框架内部的执行过程,非常有利于使用 MyBatis 出错时帮助分析和定位问题。

如果不想控制台打印这么多调试信息,可以修改 log4j 配置中的 DEBUG,将其改为 ERROR 即可,如下:

log4j.rootLogger=ERROR,A1
log4j.logger.org.apache=ERROR

MyBatis 开启 Log4j 日志调试信息开关的更多相关文章

  1. 【Mybatis】mybatis开启Log4j日志、增删改查操作

    Mybatis日志(最常用的Log4j) 官方网站http://www.mybatis.org/mybatis-3/zh/logging.html 1.在src目录下创建一个log4j.propert ...

  2. mybatis 配置 log4j 日志

    mybatis 配置 log4j 日志 使用Mybatis的时候,可能需要输出(主要是指sql,参数,结果)日志,查看执行的SQL语句,以便调试,查找问题. 测试Java类中需要加入代码: stati ...

  3. Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题

    使用Mybatis的时候,有些时候能输出(主要是指sql,参数,结果)日志.有些时候就不能. 无法输出日志的时候,无论怎么配置log4j,不管是properties的还是xml的,都不起作用. 有些时 ...

  4. Mybatis中Log4j日志的使用

    参考资料: (1). 百度百科:https://baike.baidu.com/item/log4j/480673?fr=aladdin (2). B站狂神的视频:https://www.bilibi ...

  5. nginx 隐藏index.php 并开启rewrite日志调试(apache也有)

    开启rewrite 日志 error_log       /data/log/nginx/error.log notice; 位于最外层,大约在文件的前几行 再在http{}括号里增加一行:rewri ...

  6. JS开发中自定义调试信息开关

    在开发过程中,可能随处留下几个console.log,或者alert语句,这些语句在开发过程中是很有价值的.但是项目一旦进入生产环境,过多的console.log可能影响到浏览器的运行效率,过多的al ...

  7. 在调试linux的休眠功能时如何打开调试信息开关?

    答:在bootargs中添加参数no_console_suspend即可进行调试

  8. MyBatis与log4j

    1.前言   在项目中编写Sysem.out.prinltn()的时候,是输出到控制台的,当项目发布到tomcat之后,是没有控制台的,不过可以在命令行界面还能看见,但是不容易观察一些输出结果.log ...

  9. MyBatis中log4j 和 参数 和 分页和别名 功能

    1.配置全局文件,注意各个配置标签的顺序 properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,   objectWr ...

随机推荐

  1. Spring Cloud Gateway 全局通用异常处理

    为什么需要全局异常处理 在传统 Spring Boot 应用中, 我们 @ControllerAdvice 来处理全局的异常,进行统一包装返回 // 摘至 spring cloud alibaba c ...

  2. 【macOS】屏蔽Big Sur更新提示 消除更新红点

    下面介绍如何屏蔽macOS系统更新,屏蔽Big Sur更新提示,消除更新红点. 取消自动更新选项 请选取苹果菜单  > "系统偏好设置",然后点按"软件更新&qu ...

  3. NOI2020游记

    我今年高一,这是我第一年作为正选参加NOI. 去年NOI没写游记,结果前两天想要复盘NOI2019的时候发现只能回想起一些模糊的记忆了.为了防止明年再遇到这种情况(其实我更希望没有明年),就有了这篇游 ...

  4. Linux入门之基本的概念、安装和操作

    目录 Linux基本概念 Linux的安装 虚拟机安装CentOS7 CentOS设置网络 Linux基本操作命令 文件目录操作命令 进程操作命令 文本操作命令 Linux权限操作 用户和组操作命令 ...

  5. 微服务的进程间通信(IPC)

    微服务的进程间通信(IPC) 目录 微服务的进程间通信(IPC) 术语 概述 通信视角 APIs 消息格式 RPC REST gRPC 断路器 API通信的健壮性 服务发现 异步消息 概念 消息 消息 ...

  6. 博客之初体验-----python初了解

    ---恢复内容开始--- 1.python2.x与python3.x的区别 (1) 2.x的默认编码是ASSIC码,不支持中文 (2) 3.x的默认编码是UNICODE,支持中文 (3) 2.x版本与 ...

  7. 请解释Spring事务传播传播行为

    什么叫事务传播行为? 听起来挺高端的,其实很简单. 即然是传播,那么至少有两个东西,才可以发生传播.单体不不存在传播这个行为. 事务传播行为(propagation behavior)指的就是当一个事 ...

  8. hdu3329 二分+搜索

    题意:       给你一个岛,然后岛的外侧开始涨水(内侧不涨只有外侧,也就是里面的0永远是0),问最少涨水多少才能把岛分成两个或者两个以上. 思路:       可以二分枚举水的高度(数据不大估计暴 ...

  9. hdu3182 状态压缩dp

    题意:       一个人做汉堡包,每个汉堡包有自己的花费和价值,某些汉堡包必须是在其他的某些汉堡包已经做好了的前提下才能制作,给你这个人的初始钱数,问最大的价值是多少. 思路:       比较简单 ...

  10. WindowsPE 第七章 资源表

    资源表 在程序设计中,总会设计一些数据.这些数据可能是源代码内部需要用到的常量,菜单选项.界面描述等:也可能是源代码外部的,比如程序的图标文件.北京音乐文件.配置文件等,以上这些数据统称为资源.按照程 ...