亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用log4j2打印mybatis的sql執(zhí)行日志方式

 更新時(shí)間:2023年09月19日 17:05:53   作者:PacosonSWJTU  
這篇文章主要介紹了使用log4j2打印mybatis的sql執(zhí)行日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

log4j2打印mybatis的sql執(zhí)行日志

maven配置jar包依賴 

如下:

<!-- 日志jar -->
		<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
		<dependency>
		    <groupId>org.apache.logging.log4j</groupId>
		    <artifactId>log4j-api</artifactId>
		    <version>2.11.1</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.logging.log4j</groupId>
		    <artifactId>log4j-core</artifactId>
		    <version>2.11.1</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.logging.log4j</groupId>
		    <artifactId>log4j-web</artifactId>
		    <version>2.11.1</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.logging.log4j</groupId>
		    <artifactId>log4j-slf4j-impl</artifactId>
		    <version>2.11.1</version>
		</dependency>
	</dependencies>

配置log4j2.xml文件

內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %l %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
    <Logger name="com.swjtu.crud.dao" level="DEBUG or TRACE" additivity="false">
      <AppenderRef ref="Console"/>
    </Logger>
  </Loggers>
</Configuration>

Logger 標(biāo)簽 配置了需要打印日志的mapper(Mapper類或mapper XML 文件所在包)

Logger標(biāo)簽中的 level屬性取值為 DEBUG 或者 TRACE,(取其一)

mybatis配置文件

mybatis-config.xml中設(shè)置日志的工具類 

如下:

<?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>
	<properties resource="dbconfig.properties">
	</properties>
	<settings>
  	    <!-- 駝峰命名規(guī)則 -->
  		<setting name="mapUnderscoreToCamelCase" value="true"/>
  		<!-- 配置日志工具 -->
		<setting name="logImpl" value="LOG4J2" />
  	</settings>
  	<typeAliases>
	  <package name="com.swjtu.crud.bean" />
	</typeAliases>
  	<plugins>
  		<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
  	</plugins>
	<environments default="development">
		<!-- 開(kāi)發(fā)環(huán)境 -->
		<environment id="development">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="com\swjtu\crud\dao\dept.mapper.xml"/>
	</mappers>
</configuration>

日志打印效果

20:35:28.742 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) ==>  Preparing: SELECT dept_id AS DEPT_ID , dept_name AS DEPT_NAME FROM dept_tbl WHERE rcrd_id IN ( ? , ? , ? ) 
20:35:28.786 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) ==> Parameters: 1(String), 2(String), 3(String)
20:35:28.807 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) <==      Total: 3

打印sql為:

<!-- 查詢部門列表 --> 
  <select id="getDeptList" resultType="map"> 
  	SELECT dept_id AS DEPT_ID 
  	       , dept_name AS DEPT_NAME
  	  FROM dept_tbl 
  	 WHERE rcrd_id IN 
  	      (
  	 	    <foreach collection="LIST" item="item" separator=", ">
  	 	      #{item} 
  	        </foreach> 
 	      ) 
  </select>

配置Log4j,使得MyBatis打印出SQL語(yǔ)句

環(huán)境參數(shù)

  • JDK:jdk1.8.0_25
  • IDE:Eclipse Luna Servie Release 1
  • 框架:Spring 4.1.5 + SpringMVC 4.1.5 + MyBatis 3.2.2

配置步驟

一、設(shè)置MyBatis的Setting(非必須,不同環(huán)境下,可能不需要該設(shè)置)。

在“src/main/java/resources”目錄下,創(chuàng)建mybatis-config.xml文件,并且輸入下列內(nèi)容。

<?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>
? ? <settings>
? ? ? ? <setting name="lazyLoadingEnabled" value="false" />
? ? ? ? <setting name="logImpl" value="LOG4J" />
? ? </settings>
</configuration>

二、配置log4j的配置文件。

不同的項(xiàng)目中,log4j的配置文件的格式可能不同,在一些項(xiàng)目中,log4j的配置文件是XML格式的,比如log4j.xml;在另一些項(xiàng)目中,log4j的配置文件是properties格式的,比如log4j.properties。

備注:properties格式文件的配置一般只在老的項(xiàng)目中存在,新的互聯(lián)網(wǎng)類項(xiàng)目,一般都是XML格式。

1、對(duì)于properties格式文件的配置。

###############Log4j 4 SQL Output start#################
log4j.logger.com.xxx.mydao=DEBUG
log4j.logger.com.springframework=DEBUG
log4j.logger.com.ibatis=DEBUG ?
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG ?
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG ?
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG ?
log4j.logger.java.sql.Connection=DEBUG ?
log4j.logger.java.sql.Statement=DEBUG ?
log4j.logger.java.sql.PreparedStatement=DEBUG ?
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl=DEBUG
log4j.logger.java.sql=DEBUG,CONSOLE?
###############Log4j 4 SQL Output end###################

2、對(duì)于xml格式文件的配置。

<loggers>
? ? <!-- name可以指定包名或具體的類;additivity如果指定true,則root logger也會(huì)生效,相同日志會(huì)輸出兩次;false,則只有當(dāng)前日志文件輸出 -->
? ? <!-- 借據(jù)插入接口日志 -->
? ? <logger level="info" name="insertCreditBill" additivity="false">
? ? ? ? <appender-ref ref="insertCreditBillLog" />
? ? </logger> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? <!-- 下面是打印通過(guò)log4j2打印出mybatis語(yǔ)句的配置-->
? ? <logger name="com.xxx.mydao">
? ? ? ? <level>DEBUG</level>
? ? </logger>
? ? <logger name="com.springframework">
? ? ? ? <level>DEBUG</level>
? ? </logger> ? ? ? ? ? ? ? ? ? ? ? ?
? ? <logger name="com.ibatis" additivity="true">?
? ? ? ? <level>DEBUG</level>?
? ? </logger>
? ? <logger name="com.ibatis.common.jdbc.SimpleDataSource" additivity="true">?
? ? ? ? <level>DEBUG</level>?
? ? </logger> ? ? ? ?
? ? <logger name="com.ibatis.common.jdbc.ScriptRunner" additivity="true">?
? ? ? ? <level>DEBUG</level>
? ? </logger> ? ?
? ? <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" additivity="true">?
? ? ? ? <level>DEBUG</level>
? ? </logger> ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? <logger name="Java.sql.Connection" additivity="true"> ?
? ? ? ? <level>DEBUG</level>
? ? </logger>?
? ? <logger name="java.sql.Statement" additivity="true">?
? ? ? ? <level>DEBUG</level>
? ? </logger>?
? ? <logger name="java.sql.PreparedStatement" additivity="true">?
? ? ? ? <level>DEBUG</level>
? ? </logger>?
? ? <logger name="java.sql.ResultSet" additivity="true">?
? ? ? ? <level>DEBUG</level>
? ? </logger> ? ??
? ? <logger name="org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl" additivity="true">?
? ? ? ? <level>DEBUG</level>
? ? </logger> ? ? ? ? ? ? ? ? ? ??
? ? <!-- root logger,任何其它的logger最終都相當(dāng)于繼承自 root logger -->
? ? <root level="INFO">
? ? ? ? <appenderRef ref="Console" />
? ? ? ? <appenderRef ref="FileLog"></appenderRef>
? ? </root>
</loggers>

說(shuō)明:

上述配置中,“com.xxx.mydao”為自己項(xiàng)目中MyBatis的所有的mapper和xml文件所在的包名字。

至此,log4j的打印SQL語(yǔ)句的配置完成。

3、XML格式配置的精簡(jiǎn)版本

<loggers> ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? <!-- 下面是打印通過(guò)log4j2打印出mybatis語(yǔ)句的配置-->
? ? <logger name="com.xxx.mydao">
? ? ? ? <level>DEBUG</level>
? ? </logger>
? ? <!-- root logger,任何其它的logger最終都相當(dāng)于繼承自 root logger -->
? ? <root level="INFO">
? ? ? ? <appenderRef ref="Console" />
? ? ? ? <appenderRef ref="FileLog"></appenderRef>
? ? </root>
</loggers>

說(shuō)明:  

在開(kāi)發(fā)中,需要配置讓哪個(gè)包下的程序打印出SQL,則僅僅只用配置那一個(gè)包名就成。

上述配置中,“com.xxx.mydao”為自己項(xiàng)目中MyBatis的mapper和xml文件所在的包名字,因此,精簡(jiǎn)版中,僅僅配置了這個(gè)包的內(nèi)容

拓展

“細(xì)粒度”控制:Log4j打印出MyBatis中僅僅單個(gè)Mapper的配置。

<!-- 下面是通過(guò)配置log4j2,僅僅打印出單個(gè)mapper的SQL語(yǔ)句的配置-->
<logger name="com.beebank.dao.iface.UserMapper">
? ? <level>DEBUG</level>
</logger>

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot+Vue項(xiàng)目打包部署完整步驟教程

    SpringBoot+Vue項(xiàng)目打包部署完整步驟教程

    這篇文章主要介紹了SpringBoot+Vue項(xiàng)目打包部署的相關(guān)資料,包括Vue項(xiàng)目的打包設(shè)置、SpringBoot的配置修改、跨域問(wèn)題處理、使用Nginx配置反向代理以及最終的項(xiàng)目啟動(dòng),教程假定開(kāi)發(fā)者已具備完整的前后端分離項(xiàng)目和配置好環(huán)境的服務(wù)器,需要的朋友可以參考下
    2024-10-10
  • springboot如何使用thymeleaf模板訪問(wèn)html頁(yè)面

    springboot如何使用thymeleaf模板訪問(wèn)html頁(yè)面

    springboot中推薦使用thymeleaf模板,使用html作為頁(yè)面展示。那么如何通過(guò)Controller來(lái)訪問(wèn)來(lái)訪問(wèn)html頁(yè)面呢?下面通過(guò)本文給大家詳細(xì)介紹,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-05-05
  • 【面試】Spring事務(wù)面試考點(diǎn)吐血整理(建議珍藏)

    【面試】Spring事務(wù)面試考點(diǎn)吐血整理(建議珍藏)

    本文是小編給大家收藏整理的Spring事務(wù)面試考點(diǎn),非常不錯(cuò),值得收藏,感興趣的朋友參考下吧
    2019-04-04
  • Java實(shí)現(xiàn)在線語(yǔ)音識(shí)別

    Java實(shí)現(xiàn)在線語(yǔ)音識(shí)別

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)在線語(yǔ)音識(shí)別功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Kafka消費(fèi)客戶端協(xié)調(diào)器GroupCoordinator詳解

    Kafka消費(fèi)客戶端協(xié)調(diào)器GroupCoordinator詳解

    這篇文章主要為大家介紹了Kafka消費(fèi)客戶端協(xié)調(diào)器GroupCoordinator使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Java多線程之同步鎖-lock詳解

    Java多線程之同步鎖-lock詳解

    這篇文章主要為大家詳細(xì)介紹了Java多線程中同步鎖-lock的原理與使用,文中的示例代碼講解詳細(xì),對(duì)我們了解線程有一定幫助,需要的可以參考一下
    2022-10-10
  • java中通過(guò)網(wǎng)卡名稱獲取IP地址

    java中通過(guò)網(wǎng)卡名稱獲取IP地址

    java中通過(guò)網(wǎng)卡名稱獲取IP地址,需要的朋友可以參考一下
    2013-04-04
  • MyBatisPlus分頁(yè)時(shí)排序的實(shí)現(xiàn)

    MyBatisPlus分頁(yè)時(shí)排序的實(shí)現(xiàn)

    本文主要介紹了MyBatisPlus分頁(yè)時(shí)排序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java?SpringTask定時(shí)自動(dòng)化處理方法

    Java?SpringTask定時(shí)自動(dòng)化處理方法

    這篇文章主要介紹了Java?SpringTask定時(shí)自動(dòng)化處理,通過(guò)自動(dòng)化,不僅可以提高工作效率和準(zhǔn)確性,還可以釋放人力資源以專注于更高價(jià)值的工作,需要的朋友可以參考下
    2024-08-08
  • java提高篇(二三)-----HashMap詳解

    java提高篇(二三)-----HashMap詳解

    HashMap基于哈希表的 Map 接口的實(shí)現(xiàn),本篇文章主要講訴了java中HashMap,有興趣的可以了解一下。
    2016-11-11

最新評(píng)論