log4jdbc-log4j2-jdbc4.1仅使用笔记

1 篇文章 0 订阅

简介
log4jdbc是一个JDBC驱动器,能够记录SQL日志和SQL执行时间等信息。log4jdbc使用SLF4J(Simple Logging Facade)作为日志系统。

特性:

  1. 支持JDBC3和JDBC4。
  2. 支持现有大部分JDBC驱动。
  3. 易于配置(在大部分情况下,只需要改变驱动类名并在jdbc url前加上jdbc:log4,设置好日志输出级别)。
  4. 能够自动把SQL变量值加到SQL输出日志中,改进易读性和方便调试。
  5. 能够快速标识出应用程序中执行比较慢的SQL语句。
  6. 能够生成SQL连接数信息帮助识别连接池/线程问题

Log4jdbc-log4j2版本选择

~~log4jdbc-log4j2-jdbc3.jar for JDBC 3 support in JDK 1.5
log4jdbc-log4j2-jdbc4.jar for JDBC 4 support in JDK 1.6~~ 
log4jdbc-log4j2-jdbc4.1.jar for JDBC 4.1 support in JDK 1.7~1.8

引入依赖

<dependencies>
	<dependency>
        <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-jdbc</artifactId>
     </dependency>
     <dependency>
         <groupId>org.bgee.log4jdbc-log4j2</groupId>
         <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
         <version>1.16</version>
     </dependency>
     <!--日志-->
  	 <dependency>
         <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.7.25</version>
      </dependency>
     <dependency>
         <groupId>ch.qos.logback</groupId>
         <artifactId>logback-classic</artifactId>
         <version>1.1.11</version>
     </dependency>
</dependencies>

数据库连接驱动

# 数据库驱动:
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# 数据源名称
#spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/databaseName?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=root

添加配置
在这里插入图片描述

添加log4jdbc.log4j2.properties配置文档

# If you use SLF4J. First, you need to tell log4jdbc-log4j2 that you want to use the SLF4J logger
# mapper根路径
log4jdbc.debug.stack.prefix=com.project.system.api.mapper
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.auto.load.popular.drivers=false
log4jdbc.drivers=com.mysql.cj.jdbc.Driver
log4jdbc.dump.booleanastruefalse=true
log4jdbc.dump.sql.addsemicolon=true

修改logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds" debug="false">
    <!--项目名-->
    <contextName>plojectName</contextName>
    <property name="LOG_HOME" value="logs/"/>
    <property name="log.charset" value="utf-8"/>
    <property name="log.pattern"
              value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern}</pattern>
            <charset>${log.charset}</charset>
        </encoder>
    </appender>

    <!--每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_HOME}/server.log.%d{yyyy-MM-dd-HH}</FileNamePattern>
            <MaxHistory>60</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>[%level] %d{yyyy-MM-dd HH:mm:ss.SSS} %X{logId} %c.java - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>


    <!--普通日志输出到控制台-->
    <root level="info">
        <!-- root将级别为“INFO”及大于“INFO”的日志信息交给已经配置好的名为“Console”的appender处理,“Console”appender将信息打印到Console; -->
        <appender-ref ref="console"/>
        <!-- 标识这个appender将会添加到这个logger -->
        <appender-ref ref="FILE"/>
    </root>

    <!--    监控sql日志输出-->
    <!--  如想看到表格数据,将OFF改为INFO  -->
    <logger name="jdbc.resultsettable" level="INFO" additivity="false">
        <appender-ref ref="console"/>
    </logger>

    <!--    包含 SQL 语句实际的执行时间 及sql语句(与jdbc.sqlonly功能重复)   -->
    <logger name="jdbc.sqltiming" level="INFO" additivity="false">
        <appender-ref ref="console"/>
    </logger>

    <!--      仅仅记录 SQL 语句,会将占位符替换为实际的参数-->
    <logger name="jdbc.sqlonly" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>

    <!--  包含 ResultSet 的信息,输出篇幅较长  -->
    <logger name="jdbc.resultset" level="ERROR" additivity="false">
        <appender-ref ref="console"/>
    </logger>

    <!-- 输出了 Connection 的 open、close 等信息  -->
    <logger name="jdbc.connection" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>

    <!--    除了 ResultSet 之外的所有JDBC调用信息,篇幅较长 -->
    <logger name="jdbc.audit" level="OFF" additivity="false">
        <appender-ref ref="console"/>
    </logger>

</configuration>
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
log4jdbc-log4j2是一个用于在Java应用程序中记录JDBC日志的工具。它可以通过配置文件来指定使用SLF4J作为日志记录器,并且可以通过添加相关的依赖项来集成到项目中。在配置文件中,可以设置log4jdbc.spylogdelegator.name属性为net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator,以告知log4jdbc-log4j2使用SLF4J作为日志记录器。此外,还可以设置log4jdbc.auto.load.popular.drivers属性为false,以禁止自动加载常用的JDBC驱动程序。\[1\]\[3\]如果需要使用log4jdbc-log4j2,还需要在项目的依赖项中添加org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16的依赖项。\[2\] #### 引用[.reference_title] - *1* *2* [使用Log4jdbc-log4j2打印mybatis的sql语句](https://blog.csdn.net/anyincc125/article/details/84904769)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [记一个完成的log4jdbc.log4j2 的完整配置](https://blog.csdn.net/m0_67560682/article/details/129310167)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值