MyBatis(三):核心配置文件的重要配置-Log
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可
https://space.bilibili.com/95256449?spm_id_from=333.788.b_765f7570696e666f.2
日志工厂
如果一个数据库操作出现了异常,我们需要排错,日志就能输出语句查询
主配置文件中,setting中logImpl 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。
以下是日志类型,常用的其实就是LOG4J:
SLF4J
LOG4J
LOG4J2
JDK_LOGGING
COMMONS_LOGGING
STDOUT_LOGGING
NO_LOGGING
STDOUT_LOGGING日志
标准日志工厂,不需要导包就可以使用
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
日志输出分析(只摘取了重要部分说明):
//初始化StdOutImpl类,其实就是这个STDOUT_LOGGING类
Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter.
....
//打开JDBC连接
Opening JDBC Connection
Created connection 1293680848.
Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4d1c00d0]
//查询语句
==> Preparing: select * from mybatis.user t where t.id = ?
//输入参数等信息
==> Parameters: 2(Integer)
<== Columns: id, name, pwd
<== Row: 2, RZP1, 123
<== Total: 1
User{id=2, name='RZP1', password='123'}
Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4d1c00d0]
Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4d1c00d0]
//连接放回连接池
Returned connection 1293680848 to pool.
LOG4J日志
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX/Syslog/守护进程等
可以控制每一条日志的输出格式;
通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。---意思就是可以分等级输出:info/Eception/Error/Debug...
可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
1.使用log4j需要导入依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.在resource文件夹下配置log4j.properties文件,附上狂神教学的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/rzp.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.sq1.PreparedStatement=DEBUG
输出:
观察看出和STDOUT_LOGGING很类似
[org.apache.ibatis.logging.LogFactory]-Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
...
[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Opening JDBC Connection
[org.apache.ibatis.datasource.pooled.PooledDataSource]-Created connection 1866850137.
[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Setting autocommit to false on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@6f45df59]
[com.rzp.dao.UserMapper.getUserById]-==> Preparing: select * from mybatis.user t where t.id = ?
[com.rzp.dao.UserMapper.getUserById]-==> Parameters: 2(Integer)
[com.rzp.dao.UserMapper.getUserById]-<== Total: 1
User{id=2, name='RZP1', password='123'}
[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Resetting autocommit to true on JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@6f45df59]
[org.apache.ibatis.transaction.jdbc.JdbcTransaction]-Closing JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@6f45df59]
[org.apache.ibatis.datasource.pooled.PooledDataSource]-Returned connection 1866850137 to pool.
3.自定义log4j日志输出
log4j的优点就是可以自定义输出的内容,就像System.out.println方法一样,只是能输出到日志里,更符合生产环境需求
要定义log4j日志输出,首先需要在需要输出信息的类里创建logger的静态对象
public class UserDaoTest {
//静态对象
static Logger logger = Logger.getLogger(UserDaoTest.class);
@Test
public void testLog4j(){
//就可以当作输出到日志文件的System.out.pringln方法使用了
//三个方法其实是一样的,只是输出到日志后,前面的标识分别是info debug error,方便我们查看
logger.info("info:进入了testLog4j");
logger.debug("debug:进入了tesLog4j");
logger.error("error:进入了tesLog4j");
}
}
在我们配置的目录下找到日志

观察日志:开头的[]就是我们定义的日志级别

MyBatis(三):核心配置文件的重要配置-Log的更多相关文章
- 掌握Mybatis的核心配置文件
一.配置文件结构 MyBatis的核心配置文件配置了MyBatis的一些全局信息,包含数据库连接信息和MyBatis运行时所需的各种特性,以及设置和影响MyBatis行为的一些属性. 该配置文件的元素 ...
- MyBatis(三):核心配置文件的重要配置
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可 https://space.bilibili.com/95256449?spm_id_from=333.788 ...
- Struts2_day01--Struts2的核心配置文件_常量配置_分模块开发_Action编写方式
Struts2的核心配置文件 1 名称和位置固定的 2 在配置文件中主要三个标签 package.action.result,标签里面的属性 标签package 1 类似于代码包,区别不同的actio ...
- MyBatis 创建核心配置文件和 SQL 映射文件
Mybatis 的两个配置文件(mybatis-config.xml 和 xxxMapper.xml)都为 xml 类型,因此在 eclipse 中创建 xml 文件命名为相应的 mybatis-c ...
- MyBatis探究-----核心配置文件mybatis-config.xml中配置mappers的几种方式
1.package name="映射文件所在包名" 必须保证接口名(例如IUserDao)和xml名(IUserDao.xml)相同,还必须在同一个包中 例如:<packag ...
- 03.MyBatis的核心配置文件SqlMapConfig.xml
SqlMapConfig.xml中配置的内容和顺序如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) o ...
- mybatis的核心配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC &q ...
- MyBatis基本要素---核心配置文件
今天就简单的叙述下MyBatis的核心配置文件吧~~ configuration 配置 properties 可以配置在java属性配置文件中 settings 修改Mybatis在运行时的行 ...
- mybatis源码配置文件解析之五:解析mappers标签
在上篇博客中分析了plugins标签,<mybatis源码配置文件解析之四:解析plugins标签>,了解了其使用方式及背后的原理.现在来分析<mappers>标签. 一.概述 ...
随机推荐
- 通过CGAL将一个多边形剖分成Delaunay三角网
目录 1. 概述 2. 实现 3. 结果 4. 参考 1. 概述 对于平面上的点集,通过Delaunay三角剖分算法能够构建一个具有空圆特性和最大化最小角特性的三角网.空圆特性其实就是对于两个共边的三 ...
- (转)协议森林07 傀儡 (UDP协议)
协议森林07 傀儡 (UDP协议) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经讲解了物理层.连接层和网络层.最开始的 ...
- Vue.js组件嵌套和template外用
Vue.extend组件的嵌套和template外用 组件嵌套分为全局组件嵌套和局部组件嵌套 组件嵌套需要将子元素写在父元素内 子组件必须在父组件中注册之后才能在父组件的模板中使用 全局组件嵌套 Vu ...
- httpServletRequest.getCharacterEncoding()取出来是个null,怎么办?
因为浏览器没有把正确的编码方式给服务器端. 目前,许多浏览器在Content-Type头中不会指定字符编码方式,那么容器就会使用"ISO-8859-1"方式解析POST数据,而此时 ...
- [C#] 命令总线模式
1 高内聚.低耦合 虽然已经毕业很多年了,但依然总是能记得,<软件工程>这门课的老师总是强调 "高内聚,低耦合". 这些年,在架构方面的技术发展方向,目标就是不断的拆分 ...
- Head First设计模式——桥接模式
桥接模式 桥接模式:不只改变你的实现,也改变你的抽象. 如果有一个电视厂家,遥控器需要升级,电视也需要修改.这种变化部分的封装就适合使用桥接模式,桥接模式通过将实现和抽象放在两个不同的类层次中而使它们 ...
- Nacos作为微服务注册中心,爱不释手的感觉
我觉得Nacos用起来还不错 在使用SpringCloud做分布式微服务架构时,注册中心是必不可少的一个组件.目前可以用的主要有:Eureka.Consul.Zookeeper.今天,我们就来说一下A ...
- 玩转控件:封装Dev的LabelControl和TextEdit
俗话说的好:"工欲善其事必先利其器",作为软件攻城狮也是同样道理,攻城狮开发的软件目的是简化客户的操作,让客户动动手指就可以完成很多事情,减少人力成本.这也是系统/软件存在的目的. ...
- 如何简单的将手机投屏在windows上(可在电脑上直接操作手机)
首先附上要使用的scrcpy源地址 接下来是如何使用(我用的是安卓手机+win10): 下载好后,首先使用数据线连接手机到电脑,并且手机需要打开开发人员选项(不知道如何打开的自行百度): 打开到安装s ...
- Cisco 综合配置(四)
MSTP+HSRP 模式 为实现路由的备用.冗余: VLAN10,20 流量在CO-SW1上为active状态,在CO-SW2 上为standby状态, VLAN30,40 流量在CO-SW1上为st ...