MyBatis學習總結(六)---使用log4j2將sql語句執行記錄輸出控制檯和文件中

  在上一篇博客中我簡單的介紹了在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的主要配置信息:

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

   MyBatis完整配置文件示例:

<?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的配置文件中配置如下信息:

   相關的主要配置信息:

  <!-- 將業務dao接口所在的包填寫進去,並用在控制檯和文件中輸出 -->
    <logger name="com.mybatisstudy.dao"  level="TRACE" additivity="false">
        <AppenderRef ref="Console"/>
        <AppenderRef ref="MyFile"/> 
    </logger>

  完整的配置信息示例

<?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.輸出示例

  控制檯輸出:

 

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

   日誌文件中保存的信息:

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章