spring-mybatis项目中打印完整sql不带占位符

我们在调试sql的时候,一般情况下打印的sql的都是prepared statement 语句,其中包含了占位符。这样就为我们调试工作带来了困难。使用log4jdbc能够解决这个问题:

  1. 选择自己所要使用的日志工具包

注意:mybatis会自动选择内置日志工具包,如果不手动设置,那么会从环境中逐个寻找,如果没有,那么不打印日志。具体查看官方文档

我全局使用的slf4j,log4j.因此需要手动配置mybatis日志工具为slfj

<configuration>
    <settings>
        
    
        <setting name="logImpl" value="SLF4J">setting>
    settings>
configuration>
  1. pom中引入log4jdbc的jar包


    com.googlecode.log4jdbc
    log4jdbc
    1.2

  1. 优化默认情况下输出的有许多,我们需要的就是sqlonly,因此给高的级别
    additivity 设置在缺省配置的情况下是否使用默认配置
    <logger name="jdbc.sqlonly" additivity="true">
        <level value="INFO"/>
    logger>
    <logger name="jdbc.sqltiming" additivity="true">
        <level value="ERROR"/>
    logger>

    <logger name="jdbc.resultsettable" additivity="true">
        <level value="ERROR"/>
    logger>

    <logger name="jdbc.resultset" additivity="true">
        <level value="ERROR"/>
    logger>
    <logger name="jdbc.connection" additivity="true">
        <level value="ERROR"/>
    logger>
    <logger name="jdbc.audit" additivity="true">
        <level value="WARN"/>
    logger>

  1. console输出日志
    <appender name="consoleOutput" class="org.apache.log4j.ConsoleAppender">
        
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n"/>
        layout>
    appender>
  1. 文件输出日志
    <appender name="myFile" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="E:\\IdeaProjects\\complat\\target\\complat\\output.log"/>
        <param name="Append" value="true"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                   value="%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n"/>
        layout>
    appender>


  1. 整合启动
    <root>
        
        <priority value="error"/>
        <appender-ref ref="consoleOutput"/>
        <appender-ref ref="myFile"/>
    root>

未完待续

你可能感兴趣的:(log4jdbc,mybatis日志)