您的位置:首页 > 数据库

MyBatis学习总结(六)---使用log4j2将sql语句执行记录输出控制台和文件中

2018-11-23 16:14 776 查看

  在上一篇博客中我简单的介绍了在MyBatis中如何使用日志,并给出了一个在MyBatis中使用log4j的示例。

   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]]

   日志文件中保存的信息:

   

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐