首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring JDBC没有使用log4j记录SQL

您好!感谢您的提问。

Spring JDBC 是 Spring 框架中的一个模块,用于简化 JDBC 数据库访问。它提供了一个抽象层,使开发人员能够更容易地处理 JDBC 的复杂性,同时保持代码的简洁和可读性。

关于您的问题,Spring JDBC 本身并没有使用 log4j 记录 SQL 语句。但是,您可以通过配置 Spring JDBC 的 DataSource 来实现 SQL 语句的日志记录。您可以使用 Spring 提供的 CommonsLoggingSqlQueryLoggingListenerSlf4jQueryLoggingListener 来将 SQL 语句记录到 log4j 中。

以下是一个简单的示例,展示了如何使用 CommonsLoggingSqlQueryLoggingListener 记录 SQL 语句:

代码语言:java
复制
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.jdbc.datasource.init.DataSourceInitializer;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@EnableTransactionManagement
public class DataSourceConfig {

    private static final Log logger = LogFactory.getLog(DataSourceConfig.class);

    @Bean
    public DriverManagerDataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
        dataSource.setUsername("myusername");
        dataSource.setPassword("mypassword");

        return dataSource;
    }

    @Bean
    public JdbcTemplate jdbcTemplate() {
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource());
        jdbcTemplate.setFetchSize(100);
        jdbcTemplate.setQueryTimeout(60);

        // 添加 SQL 查询日志记录监听器
        jdbcTemplate.addResultSetListener(new CommonsLoggingSqlQueryLoggingListener(logger));

        return jdbcTemplate;
    }

    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }

    @Bean
    public DataSourceInitializer dataSourceInitializer() {
        DataSourceInitializer initializer = new DataSourceInitializer();
        initializer.setDataSource(dataSource());
        initializer.setDatabasePopulator(new ResourceDatabasePopulator(new ClassPathResource("schema.sql")));
        return initializer;
    }
}

在这个示例中,我们使用了 CommonsLoggingSqlQueryLoggingListener 来记录 SQL 语句。您可以将 logger 变量替换为您自己的 log4j 记录器,以便将 SQL 语句记录到 log4j 中。

希望这个答案能够帮助您解决问题。如果您有任何其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring JDBC-使用Spring JDBC访问数据库

和RowMapperT的比较 查询单值数据 调用存储过程3种方式 示例源码 概述 Spring JDBCSpring所提供的持久层技术,它的主要目的降低JDBC API的使用难度,以一种更直接、更简洁的方式使用...Spring JDBC中,仅仅需要做那些和业务相关的DML操作的事儿而将获取资源、Statement创建、释放资源以及异常处理等繁杂乏味的工作交给Spring JDBC. ---- 使用Spring JDBC...Spring JDBC通过模板和回调机制大大降低了使用JDBC的复杂度。...没有必要使用那些带有回调接口的方法,因为Spring会在内部自动创建这些回调实例。...Spring在内部使用JDBC提供的批量更新API完成操作,如果底层的JDBC Driver不支持批量更新操作,Spring将采用逐条更新的方式模拟批量更新。

1.3K30

log4jdbc记录完整的SQL信息

0x01:log4jdbc的简单介绍   使用log4jdbc在不改变原有代码的情况下,就可以日志文件中输出的SQL语句和JDBC执行耗时情况。...平时开发使用的mybatis、hibernate、spring jdbcsql日志信息,有一点个缺点是占位符与参数是分开打印的,如果想要拷贝SQL至PLSQL Developer客户端直接执行,需要自己手动拼凑一下...-1.7.7.jar 在日志配置文件中定义相关logger对象的输出级别和输出器 在log4jdbc中定义了以下五个日志对象: jdbc.sqlonly : 记录系统执行过的sql语句 jdbc.sqltiming...: 记录sql执行的时间,可以分析耗时的sql语句 jdbc.audit : 记录除了ResultSet外的所有JDBC调用情况。...一般不需要 jdbc.resultset : 记录返回结果集信息 jdbc.connection: 记录数据库连接和释放信息,可记录当前的数据库连接数,便于诊断连接是否释放 0x03: 配置log4j

1.1K10
  • Spring实战】—— 15 Spring JDBC模板使用

    前一篇通过对传统的JDBC使用操作,可以体会到使用的繁琐与复杂,套句话说,是用了20%作了真正的工作,80%作了重复的工作。...那么通过本篇,可以了解如下的内容: 1 如何配置数据源 2 如何在spring使用模板 3 如何建立数据源的统一的基类   首先看一下如何配置数据源   我们可以使用3种方式配置数据源:   ...相对来说,最常使用的就是dbcp和c3p0了。   3 基于JDBC的驱动的数据源   这种是最基本的通过驱动程序管理数据源,但是没有连接池的概念。   ...为了避免每次都要把jdbctemplate的bean注入到我们的DAO里面,Spring为我们实现了三种对应的基类,我们的DAO实现类需要继承这些基类,就可以直接使用模板了。   ...基于JDBC的模板使用了。

    61180

    【Druid】Druid监控SSM项目性能-配置与实例

    --spring中配置数据源 p:filters="stat,wall,log4j" stat和wall。一个是用于监控,一个是用于防火墙。...--p:filters="stat,wall,log4j" stat和wall。一个是用于监控,一个是用于防火墙。如果想使用sql防火墙,必须加上wall--> <!...image.png 配置SQL慢查询的日志 在SQL监控中,有一项关于sql执行最慢执行时间的统计,但是只有一个值,就是一条sql语句最慢的执行时间记录。...--end 慢SQL记录 --> 在这里,因为我是在本地进行,数据量又小,我将时间设置为了5ms,以方便测试 修改log4j配置文件,增加慢sql日志的输出策略 #####配置根元素 log4j.rootLogger...# Druid 慢查询记录日志 log4j.logger.druid.sql=WARN,druid log4j.logger.druid.sql.DataSource=WARN,druid log4j.logger.druid.sql.Connection

    93010

    MyBatis3 用log4j在控制台输出 SQL----亲测,真实可用

    我的项目环境 Spring 4.0.2 + Spring MVC 4.0.2 + MyBatis 3.2.6 方法一:使用标准日志输出 此方法比较简单,只需要配置 MyBatis 的配置文件 Configuration..."http://mybatis.org/dtd/mybatis-3-config.dtd"> 关键语句: 指定 MyBatis 应该使用哪个日志记录实现。...如果此设置不存在,则会自动发现日志记录实现。...方法二:使用log4j日志输出 1、spring-mybatis.xml 文件不需要修改; 2、在mybatis.xml中,指定使用log4j为日志实现,这个我实际测试也不需要。        ...1、使用标准日志输出配置简单,使用log4j日志输出配置相对复杂; 2、log4j功能强大,控制粒度比较细; 当在配置文件中指定为“ STDOUT_LOGGING”时,实际使用的是哪一个日志实现?

    1.1K10

    springboot系列学习(十九):springboot项目整合Druid,Druid到底是什么,他是在项目中如何使用

    之前我们导入jdbc的依赖之后,在yml配置文件里面加数据源,之后就可以使用jdbc操作数据库了。...现在变了,我们从头开始说这个Druid在springboot项目里面如何使用 先看一下之前的整合的jdbc使用的数据源是什么 导入jdbc之后,之前的yml里面是这样写 ?...:日志记录、wall:防御sql注入 #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority #则导入...//配置 Druid 监控管理后台的Servlet; //内置 Servlet 容器时没有web.xml文件,所以使用 Spring Boot 的注册 Servlet 方式 @Bean...以后项目里面执行了什么sql语句,这个控制页面上面就会记录,我们登录后就会看到这个项目里面执行过上面sql语句 Druid的过滤器 也就是我们配置了这个,这个里面的东西就不会在监控里面看见,也就是不监控这些东西了

    1.6K20

    SpringBoot | SpringBoot整合数据库

    Boot 2.6.3默认使用 HikariDataSource 数据源,而以前版本,如 Spring Boot 1.5默认使用 org.apache.tomcat.jdbc.pool.DataSource...作为数据源; HikariDataSource 号称 Java WEB 当前速度最快的数据源,相比于传统的 C3P0 、DBCP、Tomcat jdbc 等连接池更加优秀; 可以使用 spring.datasource.type...JDBC 语句来操作数据库; 即使不使用第三方第数据库操作框架,如 MyBatis等,Spring 本身也对原生的JDBC 做了轻量级的封装,即JdbcTemplate。...:日志记录、wall:防御sql注入 #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority #则导入...:日志记录、wall:防御sql注入 #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority #则导入

    82010

    Spring Boot 2.x 自定义数据源 DruidDataSource(操作 mysql 数据库)「建议收藏」

    username 连接数据库的用户名 (多数据源时使用,单数据源时使用通用的 spring.datasource.username即可) password (多数据源时使用,单数据源时使用通用的 spring.datasource.password...,单数据源时使用通用的 spring.datasource.driver-class-name即可) connectionInitSqls 物理连接初始化的时候执行的sql exceptionSorter...)、wall-防御sql注入、log4j2-日志记录框架(值与应用中的日志框架保持一致,如 log4jlog4j、logback、slf4j) filters: stat,wall,log4j2...########## 过滤器 ########## #配置监控统计的内置过滤器:stat-监控统计(必须配置,否则监控不到sql)、wall-防御sql注入、log4j2-日志记录框架...: true #开启慢sql监控,超过指定时间则认为是慢sql记录到日志中 slow-sql-millis: 5000 slf4j: #日志监控过滤器,使用slf4j

    1.1K20

    整合Druid—SpringBoot

    Spring Boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari 与 Driud 都是当前 Java Web 上最优秀的数据源,我们来重点介绍 Spring Boot 如何集成...Boot 2.0 以上默认使用 com.zaxxer.hikari.HikariDataSource 数据源,但可以 通过 spring.datasource.type 指定数据源。...:日志记录、wall:防御sql注入 #如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority #则导入...绑定全局配置文件中的参数,再添加到容器中,而不再使用 Spring Boot 的自动生成了;我们需要 自己添加 DruidDataSource 组件到容器中,并绑定属性; package com.kuang.config...所以第一步需要设置 Druid 的后台管理页面,比如 登录账号、密码 等;配置后台管理; //配置 Druid 监控管理后台的Servlet; //内置 Servlet 容器时没有web.xml文件,所以使用

    1.2K20

    Spring Boot + Spring Cloud 实现权限管理系统 后端篇(七):集成 Druid 数据源

    数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。...SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。...,单位是毫秒  - spring.datasource.druid.filters=config,stat,wall,log4j  配置监控统计拦截的filters,去掉后监控界面SQL无法进行统计,’...相关的类查找不到,然后查看依赖,发现确实没有 log4j 的依赖,有些奇怪,尝试了一下,也没发现其他办法,手动加一下吧。...SQL监控 分别访问下面两个接口之后,SQL监控的记录结果。 http://localhost:8088/user/findByUserId?

    98320

    mybatis-plus的使用 ------ 入门

    集成mybatis-plus要把mybatis、mybatis-spring去掉,避免冲突;lombok是一个工具,添加了这个依赖,开发工具再安装Lombok插件,就可以使用它了,最常用的用法就是在实体类中使用它的...DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org...使用MyBatis : 需要在 SQL 映射文件中编写带条件查询的 SQL,并用PageHelper 插件完成分页. 实现以上一个简单的需求,往往需要我们做很多重复单调的工作。...使用MP: 依旧不用编写 SQL 语句,MP 提供了功能强大的条件构造器 ------ EntityWrapper。 接下来就直接看几个案例体会EntityWrapper的使用。...总结: 以上便是mybatis-plus的入门教程,介绍了其如何与spring整合、通用crud的使用、全局策略的配置以及条件构造器的使用,但是这并不是MP的所有内容,其强大不限于此,想了解更多其用法,

    7.4K40

    Spring Boot:集成Druid数据源

    综合概述 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏...SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。...,单位是毫秒  - spring.datasource.druid.filters=config,stat,wall,log4j  配置监控统计拦截的filters,去掉后监控界面SQL无法进行统计,’...相关的类查找不到,然后查看依赖,发现确实没有 log4j 的依赖,有些奇怪,尝试了一下,也没发现其他办法,手动加一下吧。...SQL监控 分别访问下面两个接口之后,SQL监控的记录结果。 http://localhost:8080/user/findByUserId?

    3.8K30

    使用Druid监控SQL执行状态

    本文使用Druid的连接池替换掉原来的C3P0连接池,然后配置Druid的相关属性,完成对Spring Web工程的JDBC监控。...如果没有配置StatFilter,那么,我们无法获取相关统计信息。 比如:无法看到SQL监控TAB上的数据。 ? URI监控TAB中,无法获取JDBC相关的SQL执行信息。 ?...在URI监控页,可以清楚地看到执行某个动作,关联SQL有多少,请求次数、执行时间、并发数等信息。 StatFilter可以和其他的Filter配置使用,比如, 与log4j组合使用。...记录 StatFilter属性slowSqlMillis用来配置SQL慢的标准,执行时间超过slowSqlMillis的就是慢。...因为是默认状态,没有配置任何拦截的属性信息,所以,SQL的执行都在白名单中展示出来了。 2.6 配置Springjdbc的关联 最后,还有一个Tab的内容没有展示,那就是Spring监控。

    6.4K50
    领券