您的位置:首页 > 数据库

log4j配置打印mybatis sql语句

2017-08-22 16:08 447 查看
log4j.rootLogger=DEBUG, stdout    

    

log4j.appender.stdout=org.apache.log4j.ConsoleAppender    

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout    

log4j.appender.stdout.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p %c %x - %m%n    

    

#log4j.appender.R=org.apache.log4j.DailyRollingFileAppender    

#log4j.appender.R.File=../logs/service.log    

#log4j.appender.R.layout=org.apache.log4j.PatternLayout    

#log4j.appender.R.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p %c %x - %m%n    

    

#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 
  

我们现在分几种情况处理:

 1、此种情况只出现mybatis使用,无其他的包介入(如spring等,因为有些包会引入其他的日志系统,会造成干扰,稍后讲解)

[html] view
plain copy

 <dependency>     

    <groupId>log4j</groupId>  

    <artifactId>log4j</artifactId>  

    <ve
20a90
rsion>1.2.17</version>  

    </dependency>  

  

    <dependency>  

    <groupId>org.slf4j</groupId>  

    <artifactId>slf4j-log4j12</artifactId>  

    <version>1.7.21</version>  

    </dependency>  

  

       <dependency>  

       <groupId>org.slf4j</groupId>  

       <artifactId>slf4j-api</artifactId>  

       <version>1.7.21</version>  

       </dependency>  

  

1、单独开放第三个无法打印sql语句  

2、第一种和第三种无法打印sql语句  

3、其他情况都可以打印出sql语句  

4、最后得出的结论可能是版本冲突的问题  

总而言之  

1、没有slf4j,只要log4j即可  

2、有slf4j,则必须要有slf4j-log4j12,其他的可有可无  

此时可以配置log4j.properties和log4j.xml均可以实现

如:log4j.properties

[html] view
plain copy

log4j.rootLogger=DEBUG, stdout    

    

log4j.appender.stdout=org.apache.log4j.ConsoleAppender    

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout    

log4j.appender.stdout.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p %c %x - %m%n    

    

#log4j.appender.R=org.apache.log4j.DailyRollingFileAppender    

#log4j.appender.R.File=../logs/service.log    

#log4j.appender.R.layout=org.apache.log4j.PatternLayout    

#log4j.appender.R.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p %c %x - %m%n    

    

#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 

2、mybatis和其他架构包混用,

最头痛的就是这种,试了很多种办法,最后才校验出一种合适的办法。就是一定要用log4j.xml配置

配置如下:

[html] view
plain copy

<?xml version="1.0" encoding="UTF-8"?>   

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"  

    debug="false">  

      

    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">  

        <layout class="org.apache.log4j.PatternLayout">  

            <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />  

        </layout>  

    </appender>  

  

<!--     <appender name="FILE" class="org.apache.log4j.RollingFileAppender"> -->  

<!--         <param name="file" value="${user.home}/foss-framework.log" /> -->  

<!--         <param name="append" value="true" /> -->  

<!--         <param name="maxFileSize" value="10MB" /> -->  

<!--         <param name="maxBackupIndex" value="100" /> -->  

<!--         <layout class="org.apache.log4j.PatternLayout"> -->  

<!--             <param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n" /> -->  

<!--         </layout> -->  

<!--     </appender> -->  

  

<!--     <appender name="framework" -->  

<!--         class="com.deppon.foss.framework.server.components.logger.BufferedAppender"> -->  

<!--         <layout class="org.apache.log4j.PatternLayout"> -->  

<!--             <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" /> -->  

<!--         </layout> -->  

<!--     </appender> -->  

  

    <!-- 下面是打印 mybatis语句的配置 -->  

    <logger name="com.ibatis" additivity="true">  

        <level value="DEBUG" />  

    </logger>  

  

    <logger name="java.sql.Connection" additivity="true">  

        <level value="DEBUG" />  

    </logger>  

  

    <logger name="java.sql.Statement" additivity="true">  

        <level value="DEBUG" />  

    </logger>  

  

    <logger name="java.sql.PreparedStatement" additivity="true">  

        <level value="DEBUG" />  

    </logger>  

  

    <logger name="java.sql.ResultSet" additivity="true">  

        <level value="DEBUG" />  

    </logger>  

  

    <root>  

        <level value="DEBUG" />  

        <appender-ref ref="CONSOLE" />  

<!--         <appender-ref ref="FILE" /> -->  

<!--         <appender-ref ref="framework" /> -->  

    </root>  

</log4j:configuration>   

好的能够打印出sql语句啦,成功啦!

[html] view
plain copy

[24/07/16 03:49:25:025 CST] DEBUG spring.SqlSessionUtils: Creating a new SqlSession  

[24/07/16 03:49:25:025 CST] DEBUG spring.SqlSessionUtils: SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@5a90d465] was not registered for synchronization because synchronization is not active  

[24/07/16 03:49:25:025 CST] DEBUG datasource.DataSourceUtils: Fetching JDBC Connection from DataSource  

[24/07/16 03:49:25:025 CST] DEBUG datasource.DriverManagerDataSource: Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3307/security_db?useUnicode=true&characterEncoding=utf-8]  

[24/07/16 03:49:25:025 CST] DEBUG transaction.SpringManagedTransaction: JDBC Connection [com.mysql.jdbc.JDBC4Connection@51e19e59] will not be managed by Spring  

[24/07/16 03:49:25:025 CST] DEBUG UserMapper.getUserNum: ==>  Preparing: select COUNT(DISTINCT(user.id)) as total_num from user, user_roles where user.id = user_roles.User_id   

[24/07/16 03:49:25:025 CST] DEBUG UserMapper.getUserNum: ==> Parameters:   

[24/07/16 03:49:25:025 CST] DEBUG UserMapper.getUserNum: <==      Total: 1
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: