zoukankan      html  css  js  c++  java
  • log4jdbc 使用

    像 hibernate, mybatis 都是不打印真正执行的sql的,所以借助 log4jdbc 打印sql以及统计执行时间是非常方便的。

    配置log4jdbc 有很多种方法,比如通过spring的拦截器。最简单的方法就是在jdbc.url 连接参数加上log4jdbc,然后引入相应的log4jdbc包即可。

    # 修改前
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8
    
    # 修改后
    spring.datasource.driver-class-name=net.sf.log4jdbc.DriverSpy
    spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8
    

      

    复制代码
    COMMENT 原连接参数:
    jdbc.url=jdbc:mysql://127.0.0.1:3306/theme?characterEncoding=utf-8
    
    
    
    COMMENT 加入log4jdbc后的连接参数:
    jdbc.url=jdbc:log4jdbc:mysql://127.0.0.1:3306/theme?characterEncoding=utf-8
    复制代码

    引入jar包

    复制代码
    <!-- log4jdbc -->
    <dependency>
        <groupId>com.googlecode.log4jdbc</groupId>
        <artifactId>log4jdbc</artifactId>
        <version>1.2</version>
        <scope>runtime</scope>
    </dependency>
    复制代码

    我用logback,所以还要引入logback 和 slf4j-api包。

    因为log4jdbc 默认输出很多日志,所以需要配置,可以通过新建 log4jdbc.properties 配置,也可以通过logback.xml文件里配置, 用log4j的则是通过log4j.properties 或log4j.xml配置。

    复制代码
    <!-- -->
    <logger name="jdbc.sqlonly" level="WARN"/>  
    <logger name="jdbc.sqltiming" level="INFO"/>  
    <logger name="jdbc.resultsettable" level="INFO"/>  
    <logger name="jdbc.resultset" level="WARN"/>  
    <logger name="jdbc.connection" level="WARN"/>  
    <logger name="jdbc.audit" level="WARN"/>
    
    
    <!-- 或者关闭不必要的 -->
    <logger name="jdbc.connection" level="OFF" />
    <logger name="jdbc.audit" level="OFF" />
    <logger name="jdbc.resultset" level="OFF" />
    <logger name="jdbc.sqlonly" level="OFF" />
    <logger name="jdbc.sqltiming" level="INFO" />
    <logger name="jdbc.resultsettable" level="INFO"/> 
    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml"/>
        <logger name="jdbc.connection" additivity="false" level="FATAL">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </logger>
        <logger name="jdbc.resultset" additivity="false" level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </logger>
        <logger name="jdbc.audit" additivity="false" level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </logger>
        <logger name="jdbc.sqlonly" additivity="false" level="DEBUG">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </logger>
        <logger name="jdbc.sqltiming" additivity="false" level="DEBUG">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </logger>
    </configuration>
    

      

  • 相关阅读:
    【转】使用外部看门狗请三思!
    【转】一招解决MCU启动异常
    【转】电源芯片选型,容易忽略的“QC”
    【转】为什么 MQTT 是最适合物联网的网络协议
    【转】中国芯酸往事
    函数输入参数类型为枚举时,则限定函数参数的接收范围,非枚举值输入则错误
    函数形参为指针与非指针的区别
    【转】函数中的形参问题(指针形参、引用形参、二重指针作为形参)
    【转】Example of using the --info linker option
    【转】STM32
  • 原文地址:https://www.cnblogs.com/JAYIT/p/10445564.html
Copyright © 2011-2022 走看看