最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring?boot?mybatis日志輸出到控制臺的方法實(shí)踐

 更新時間:2024年05月05日 11:19:26   作者:mob6454cc76bc4a  
在開發(fā)過程中我們往往需要打印出SQL語句,這樣就方便我們監(jiān)控問題,本文主要介紹了spring?boot?mybatis日志輸出到控制臺的方法實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下

在開發(fā)過程中我們往往需要打印出SQL語句,這樣就方便我們監(jiān)控問題。下面我來簡單的介紹一下我使用過的兩種方法,一種需要使用log4j,一種需要在MyBatis的配置文件里配置。

日志級別設(shè)置

日志記錄器(Logger)的行為是分等級的。分為: OFF FATAL WARN INFO DEBUG  TRACE  ALL ;

Log4j建議只使用四個級別,優(yōu)先級從高到低分別是ERROR、WARN、INFO、DEBUG。通過在這里定義的級別,您可以控制到應(yīng)用程序中相應(yīng)級別的日志信息的開關(guān)。 比如在這里定義了INFO級別,則應(yīng)用程序中所有DEBUG級別的日志信息將不被打印出來。 程序會打印高于或等于所設(shè)置級別的日志,設(shè)置的日志等級越高,打印出來的日志就越少。 
如果設(shè)置級別為INFO,則優(yōu)先級高于等于INFO級別(如:INFO、WARN、 ERROR)的日志信息將可以被輸出,小于該級別的如DEBUG將不會被輸出。

第一種方法:

直接使用Log4j輸出SQL語句。這種方法比較簡單,只需要在log4j的配置文件(log4j.properties)里面進(jìn)行配置,不需要進(jìn)行其他額外的配置,當(dāng)然,這里需要使用log4j的jar包,如果使用maven,那么在pom文件里面添加即可。

log4j.properties配置文件:

### 日志級別設(shè)置 ###  
log4j.rootLogger = INFO , C , D , E   
  
### 控制臺打印 ###  
log4j.appender.C = org.apache.log4j.ConsoleAppender  
log4j.appender.C.Target = System.out  
log4j.appender.C.layout = org.apache.log4j.PatternLayout  
log4j.appender.C.layout.ConversionPattern = [test][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  
  
### 文件輸出 ###  
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender  
log4j.appender.D.File = ../logs/test.log  
log4j.appender.D.Append = true  
log4j.appender.D.Threshold = INFO   
log4j.appender.D.layout = org.apache.log4j.PatternLayout  
log4j.appender.D.layout.ConversionPattern = [test][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n  
  
### exception ###  
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender  
log4j.appender.E.File = ../logs/test_error.log   
log4j.appender.E.Append = true  
log4j.appender.E.Threshold = ERROR   
log4j.appender.E.layout = org.apache.log4j.PatternLayout  
log4j.appender.E.layout.ConversionPattern = [test][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

下面這段是重點(diǎn)

###############Log4j 4 SQL Output start#################
log4j.logger.com.***.***.dao=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###################

com.***.***.dao 是你的 Dao包所在的路徑

通過上面的配置后,即可在控制臺查看mybatis執(zhí)行的SQL語句。

第二種方法:

在mybatis配置文件的<settings>標(biāo)簽里面添加如下語句:

<setting name="logImpl" value="STDOUT_LOGGING" />

具體如:

<settings>
        <!-- 打印查詢語句  這種方式不需要進(jìn)行l(wèi)og4j配置 -->
       <setting name="logImpl" value="STDOUT_LOGGING" /> 
    </settings>

如果使用spring集成了mybatis,那么就直接在spring-mybatis文件里的mybatis配置標(biāo)簽里添加上面的語句即可。

如果配置文件里沒有<settings>標(biāo)簽,我們可以新建一個mybatis-config.xml文件,然后在spring-mybatis(spring集成mybatis的配置文件)里引入該文件即可,具體如下:

1. 新建的mybatis-config.xml文件

<?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>
        <!-- 打印查詢語句  這種方式不需要進(jìn)行l(wèi)og4j配置 -->
       <setting name="logImpl" value="STDOUT_LOGGING" /> 
    </settings>
</configuration>

2. spring-mybatis.xml中引入的mybatis-config.xml文件

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"  
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xsi:schemaLocation="  
        http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd   
        http://www.springframework.org/schema/tx   
        http://www.springframework.org/schema/tx/spring-tx-4.1.xsd  
        http://www.springframework.org/schema/aop   
        http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
        ">  
 
    <!-- 配置數(shù)據(jù)源 使用的是Druid數(shù)據(jù)源 -->  
    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"  
        init-method="init" destroy-method="close">  
        <property name="url" value="${jdbc.url}" />  
        <property name="username" value="${jdbc.username}" />  
        <property name="password" value="${jdbc.password}" />  
  
        <!-- 初始化連接大小 -->  
        <property name="initialSize" value="0" />  
        <!-- 連接池最大使用連接數(shù)量 -->  
        <property name="maxActive" value="20" />  
          
        <!-- 連接池最小空閑 -->  
        <property name="minIdle" value="0" />  
        <!-- 獲取連接最大等待時間 -->  
        <property name="maxWait" value="60000" />  
        <property name="poolPreparedStatements" value="true" />  
        <property name="maxPoolPreparedStatementPerConnectionSize"  
            value="33" />  
        <!-- 用來檢測有效sql -->  
        <property name="validationQuery" value="${validationQuery}" />  
        <property name="testOnBorrow" value="false" />  
        <property name="testOnReturn" value="false" />  
        <property name="testWhileIdle" value="true" />  
        <!-- 配置間隔多久才進(jìn)行一次檢測,檢測需要關(guān)閉的空閑連接,單位是毫秒 -->  
        <property name="timeBetweenEvictionRunsMillis" value="60000" />  
        <!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->  
        <property name="minEvictableIdleTimeMillis" value="25200000" />  
        <!-- 打開removeAbandoned功能 -->  
        <property name="removeAbandoned" value="true" />  
        <!-- 1800秒,也就是30分鐘 -->  
        <property name="removeAbandonedTimeout" value="1800" />  
        <!-- 關(guān)閉abanded連接時輸出錯誤日志 -->  
        <property name="logAbandoned" value="true" />  
        <!-- 監(jiān)控?cái)?shù)據(jù)庫 -->  
        <property name="filters" value="mergeStat" />  
    </bean>  
  
    <!-- myBatis文件 -->  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />
        
         <!-- 引入打印查詢語句的配置文件 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>

         
        <!-- 自動掃描entity目錄, 省掉Configuration.xml里的手工配置 --> 
        <property name="mapperLocations" value="classpath:com/zhh/merchantwap/mapping/*.xml" /> 
         
            <!-- pageHelper 分頁插件 --> 
         <property name="plugins">
              <array>
               <bean class="com.github.pagehelper.PageHelper">
                <property name="properties">
                 <value>
                     dialect=Oracle
                 </value>
                </property>
               </bean>
              </array>
        </property>
    </bean>  
  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="com.zhh.merchantwap.dao" />  
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />  
    </bean>  
  
    <!-- 配置事務(wù)管理器 -->  
    <bean id="transactionManager"  
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource" />  
    </bean>  
  
    <!-- 注解方式配置事物 -->  
    <!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->  
  
    <!-- 攔截器方式配置事物 -->  
    <tx:advice id="transactionAdvice" transaction-manager="transactionManager">  
        <tx:attributes>  
            <tx:method name="insert*" propagation="REQUIRED" />  
            <tx:method name="update*" propagation="REQUIRED" />  
            <tx:method name="delete*" propagation="REQUIRED" />   
            <tx:method name="get*" propagation="SUPPORTS" read-only="true" />  
            <tx:method name="find*" propagation="SUPPORTS" read-only="true" />  
            <tx:method name="select*" propagation="SUPPORTS" read-only="true" />  
  
        </tx:attributes>  
    </tx:advice>  
    <!-- Spring aop事務(wù)管理 -->  
    <aop:config>  
        <aop:pointcut id="transactionPointcut"  
            expression="execution(* com.zhh.merchantwap.service..*Impl.*(..))" />  
        <aop:advisor pointcut-ref="transactionPointcut"  
            advice-ref="transactionAdvice" />  
    </aop:config>  
  
</beans>

引入的標(biāo)簽:<property name="configLocation" value="classpath:mybatis-config.xml"></property> 

通過上面的配置,我們就可以在控制臺查看執(zhí)行的SQL語句了。

因?yàn)槊總€項(xiàng)目的配置文件都不太一樣,所以具體配置標(biāo)簽所在的位置得根據(jù)情況來定。

到此這篇關(guān)于spring boot mybatis日志輸出到控制臺的方法實(shí)踐的文章就介紹到這了,更多相關(guān)spring boot mybatis日志輸出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實(shí)現(xiàn)計(jì)算器加法小程序(圖形化界面)

    java實(shí)現(xiàn)計(jì)算器加法小程序(圖形化界面)

    這篇文章主要介紹了Java實(shí)現(xiàn)圖形化界面的計(jì)算器加法小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • JAVA調(diào)用SAP WEBSERVICE服務(wù)實(shí)現(xiàn)流程圖解

    JAVA調(diào)用SAP WEBSERVICE服務(wù)實(shí)現(xiàn)流程圖解

    這篇文章主要介紹了JAVA調(diào)用SAP WEBSERVICE服務(wù)實(shí)現(xiàn)流程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 詳解前后端分離之Java后端

    詳解前后端分離之Java后端

    這篇文章主要介紹了詳解前后端分離之Java后端,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • java中break和continue源碼解析

    java中break和continue源碼解析

    這篇文章主要針對java中break和continue的區(qū)別進(jìn)行詳細(xì)介紹,幫助大家更好的學(xué)習(xí)了解java中break和continue源碼,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 詳解Java String字符串獲取每一個字符及常用方法

    詳解Java String字符串獲取每一個字符及常用方法

    這篇文章主要介紹了詳解Java String字符串獲取每一個字符及常用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java 線程安全與 volatile與單例模式問題及解決方案

    Java 線程安全與 volatile與單例模式問題及解決方案

    文章主要講解線程安全問題的五個成因(調(diào)度隨機(jī)、變量修改、非原子操作、內(nèi)存可見性、指令重排序)及解決方案,強(qiáng)調(diào)使用volatile關(guān)鍵字可同時解決內(nèi)存可見性和指令重排問題,并結(jié)合單例模式中的餓漢與懶漢實(shí)現(xiàn)方式分析線程安全的處理,感興趣的朋友一起看看吧
    2025-06-06
  • SpringBoot自定義maven-plugin插件整合asm代碼插樁

    SpringBoot自定義maven-plugin插件整合asm代碼插樁

    本文主要介紹了SpringBoot自定義maven-plugin插件整合asm代碼插樁,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java中的SynchronousQueue隊(duì)列詳解

    Java中的SynchronousQueue隊(duì)列詳解

    這篇文章主要介紹了Java中的SynchronousQueue隊(duì)列詳解,SynchronousQueue是BlockingQueue的一種,所以SynchronousQueue是線程安全的,SynchronousQueue和其他的BlockingQueue不同的是SynchronousQueue的capacity是0,需要的朋友可以參考下
    2023-12-12
  • Maven項(xiàng)目如何查找jar包是由哪個依賴引入的

    Maven項(xiàng)目如何查找jar包是由哪個依賴引入的

    這篇文章主要介紹了Maven項(xiàng)目如何查找jar包是由哪個依賴引入的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • MybatisPlus?BaseMapper?實(shí)現(xiàn)對數(shù)據(jù)庫增刪改查源碼

    MybatisPlus?BaseMapper?實(shí)現(xiàn)對數(shù)據(jù)庫增刪改查源碼

    MybatisPlus?是一款在?Mybatis?基礎(chǔ)上進(jìn)行的增強(qiáng)?orm?框架,可以實(shí)現(xiàn)不寫?sql?就完成數(shù)據(jù)庫相關(guān)的操作,這篇文章主要介紹了MybatisPlus?BaseMapper?實(shí)現(xiàn)對數(shù)據(jù)庫增刪改查源碼解析,需要的朋友可以參考下
    2023-01-01

最新評論

通州市| 凤翔县| 禹城市| 喀喇沁旗| 崇左市| 建湖县| 新宁县| 和政县| 竹山县| 浠水县| 陕西省| 宜宾县| 体育| 黄大仙区| 广丰县| 沾化县| 体育| 会东县| 蓬安县| 巢湖市| 文山县| 阿巴嘎旗| 黄骅市| 岑巩县| 吴旗县| 读书| 共和县| 浦城县| 响水县| 定州市| 寿阳县| 芜湖市| 河东区| 徐州市| 涿鹿县| 商水县| 北票市| 武乡县| 陆川县| 双峰县| 霍城县|