MyBatis学习总结(六)---使用log4j2将sql语句执行记录输出控制台和文件中
2018-11-23 16:14
776 查看
在上一篇博客中我简单的介绍了在MyBatis中如何使用日志,并给出了一个在MyBatis中使用log4j的示例。
下面介绍在MyBatis中如何使用log4j2将sql语句执行记录输出控制台和文件中。
1.示例项目目录:
2.先导入log4j2所需要的两个jar包,如:log4j-api-2.11.1.jar,log4j-core-2.11.1.jar
3.在MyBatis的配置文件中配置如下信息:
MyBatis配置文件中有关Logj2的主要配置信息:
[code]<settings> <setting name="logImpl" value="LOG4J2" /> </settings>
MyBatis完整配置文件示例:
[code]<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 引用并使用db.properties --> <properties resource="db.properties" /> <!-- 使用log4j2输出日志 --> <settings> <setting name="logImpl" value="LOG4J2" /> </settings> <!-- environments:信息配置的是连接数据库的(数据源的)一些参数,如用户名,密码等,MyBatis数据库操作的session就是根据这些信息初始化的 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 数据源配置 --> <dataSource type="POOLED"> <!-- 数据库驱动 --> <property name="driver" value="${driver}" /> <!-- 数据库连接URL --> <property name="url" value="${url}" /> <!-- 数据库用户名和密码 --> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <!-- mappers:配置的是一个个Mapper文件,这些文件来约束数据库的信息(Relationship) 和 对象(Object)的信息映射(Mapper);它负责完成对象和数据库表的映射,是ORM最具体的配置 --> <mappers> <!-- 配置实体映射文件 --> <mapper resource="com/mybatisstudy/dao/userMapper.xml" /> </mappers> </configuration>
4.在log4j2的配置文件中配置如下信息:
相关的主要配置信息:
[code] <!-- 将业务dao接口所在的包填写进去,并用在控制台和文件中输出 --> <logger name="com.mybatisstudy.dao" level="TRACE" additivity="false"> <AppenderRef ref="Console"/> <AppenderRef ref="MyFile"/> </logger>
完整的配置信息示例
[code]<?xml version="1.0" encoding="UTF-8"?> <Configuration status="trace"> <!-- 配置日志信息输出目的地 --> <Appenders> <!-- 输出到控制台 --> <Console name="Console" target="SYSTEM_OUT"> <!--配置日志信息的格式 --> <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" /> "/> </Console> <!-- 输出到文件,其中有一个append属性,默认为true,即不清空该文件原来的信息,采用添加的方式,若设为false,则会先清空原来的信息,再添加 --> <File name="MyFile" fileName="D:/Log4j2.log" append="false"> <PatternLayout> <!--配置日志信息的格式 --> <pattern>%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</pattern> </PatternLayout> </File> </Appenders> <!-- 定义logger,只有定义了logger并引入了appender,appender才会有效 --> <Loggers> <!-- 将业务dao接口所在的包填写进去,并用在控制台和文件中输出 --> <logger name="com.mybatisstudy.dao" level="TRACE" additivity="false"> <AppenderRef ref="Console" /> <AppenderRef ref="MyFile" /> </logger> <Root level="info"> <AppenderRef ref="Console" /> <AppenderRef ref="MyFile" /> </Root> </Loggers> </Configuration>
5.输出示例
控制台输出:
[code]2018-11-23 15:49:28,422 main TRACE Using default SystemClock for timestamps. 2018-11-23 15:49:28,423 main DEBUG org.apache.logging.log4j.core.util.SystemClock does not support precise timestamps. 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.addUser - ==> Parameters: 1003(Integer), 小杰(String), 男(String), 20(Integer) 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.addUser - <== Updates: 1 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.updateUser - ==> Preparing: UPDATE user SET age=? ,name=? WHERE id=? 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.updateUser - ==> Parameters: 21(Integer), 小明(String), 1003(Integer) 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.updateUser - <== Updates: 1 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.selectUserById - ==> Preparing: SELECT * FROM user where id = ? ; 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.selectUserById - ==> Parameters: 1001(Integer) 15:49:28 [main] TRACE com.mybatisstudy.dao.IUserDao.selectUserById - <== Columns: id, name, sex, age 15:49:28 [main] TRACE com.mybatisstudy.dao.IUserDao.selectUserById - <== Row: 1001, 小明, 男, 21 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.selectUserById - <== Total: 1 [id:1001,name:小明,sex:男,age:21] 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.deleteUserById - ==> Preparing: DELETE FROM user WHERE id=?; 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.deleteUserById - ==> Parameters: 1003(Integer) 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.deleteUserById - <== Updates: 1 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.selectAllUser - ==> Preparing: SELECT * FROM user ; 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.selectAllUser - ==> Parameters: 15:49:28 [main] TRACE com.mybatisstudy.dao.IUserDao.selectAllUser - <== Columns: id, name, sex, age 15:49:28 [main] TRACE com.mybatisstudy.dao.IUserDao.selectAllUser - <== Row: 1001, 小明, 男, 21 15:49:28 [main] TRACE com.mybatisstudy.dao.IUserDao.selectAllUser - <== Row: 1002, 小华, 男, 18 15:49:28 [main] DEBUG com.mybatisstudy.dao.IUserDao.selectAllUser - <== Total: 2 [[id:1001,name:小明,sex:男,age:21], [id:1002,name:小华,sex:男,age:18]]
日志文件中保存的信息:
阅读更多
相关文章推荐
- 如何在控制台输出mybatis所执行的SQL语句(配置LOG4J文件)
- mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
- mybatis源码学习之执行过程分析(4)——映射文件中sql的获取和sql语句的执行
- mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据
- Mysql 将结果保存到文件 从文件中执行sql语句 记录操作过程(tee 命令的使用)
- mybatis学习之二、SQL语句映射文件(2)增删改查、参数、缓存
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
- java学习总结(16.05.08)在windows下使用cmd命令行对java文件进行编译和执行
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
- MyBatis学习-使用SqlBuilder生成SQL语句
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- mybatis如何在控制台打印执行的sql语句
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- mybatis拦截器的使用(输出日志或sql语句)