zoukankan      html  css  js  c++  java
  • ssm框架中,mybatis的sql语句日志输出

    在ssm框架中,常用的日志输出为Log4j,但按照常规的配置,涉及mybatis那部分日志不能打印出来的;由于没有日志的输出,开发人员很难从控制台中迅速找出相应的sql语句,对调试和找错误带来了一定的困扰,针对这个问题,我们需要额外的配置以达到日志的输出

    常见的两种方法为:

    在日志配置文件(log4j.properties)中增加将mybatis那部分日志级别设置为DEBUG,配置如下:

    #mybatis部分
    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
    #与sql相关
    log4j.logger.java.sql.Connection=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG

    注意:另外需要在定义LOG输出级别时,把DEBUG级别的也作为日志输出的一部分,附个人完整Log4j配置:

    #定义LOG输出级别  
    log4j.rootLogger=DEBUG,INFO,Console,File  
    #定义日志输出目的地为控制台  
    log4j.appender.Console=org.apache.log4j.ConsoleAppender  
    log4j.appender.Console.Target=System.out  
    #可以灵活地指定日志输出格式,下面一行是指定具体的格式  
    log4j.appender.Console.layout = org.apache.log4j.PatternLayout  
    log4j.appender.Console.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH:mm:ss}][%c]%m  %l%n
     
    #文件大小到达指定尺寸的时候产生一个新的文件  
    log4j.appender.File = org.apache.log4j.RollingFileAppender  
    #指定输出目录  
    log4j.appender.File.File = logs/ssm.log  
    #定义文件最大大小  
    log4j.appender.File.MaxFileSize = 10MB  
    #输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志  
    log4j.appender.File.Threshold = ALL  
    log4j.appender.File.layout = org.apache.log4j.PatternLayout  
    log4j.appender.File.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH:mm:ss}][%c]%m  %l%n
    #mybatis日志配置 需要将日志的输出级别调为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
    #与sql相关
    log4j.logger.java.sql.Connection=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG

    配置根Logger,log4j.rootLogger = [ level ] , appenderName
    【level】是日志的级别,分别有debug -> info -> warn -> error 四种日志级别;
    【appenderName】,配置日志的输出目录,同一个日志可以配置多个输出目的地;
    配置log输出目的地:
    org.apache.log4j.ConsoleAppender(控制台)
    org.apache.log4j.FileAppender(文件)
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

    2、在Mybatis的配置文件中增加setting配置

    个人在搭ssm框架中,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>
            <!-- 打印查询语句 -->
            <setting name="logImpl" value="STDOUT_LOGGING" />
        </settings>
    </configuration>

    日志部分,增加name为logImpl的setting配置,value属性(即日志的打印方式)可选有:SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING,可以根据自己的需要进行配置,但个人在测试的过程中,只有值为STDOUT_LOGGING时,日志才有输出,此处存在疑问,有哪位大神能指点一下么?

            另外settings的更多参数可以参考官网文档:

            http://www.mybatis.org/mybatis-3/zh/configuration.html#settings

    注意:在增加mybatis-config.xml后,需要在spring与mybatis的整合配置文件(spring-mybatis.xml)中增加映射才可生效,如下:

    <!-- spring和MyBatis整合-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mybatis配置文件 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!-- 自动扫描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:com/merch/mapping/*.xml"></property>
    </bean>
  • 相关阅读:
    扩展json序列化datatime类型数据
    用select实现socket的IO多路复用
    Python单例模式
    Django(信号相关)
    将字符串按固定长度分隔成子串
    Android Handler介绍
    Android activity生命周期
    Java 启动线程的方式
    java线程中的sleep和wait区别
    JAVA 统计字符串中中文,英文,数字,空格的个数
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/12175883.html
Copyright © 2011-2022 走看看