IDEA 集成log4j将SQL语句打印在控制台上的实现操作

实现IDEA集成log4j将SQL语句打印在控制台上的操作,需要按照下面的步骤进行:

第一步:添加log4j依赖

1.在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

2.在resources文件夹下添加log4j.properties文件:

# root logger
log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t:%C{1}.%M(%L)]- [%p] %m%n

# SQL logger
log4j.logger.com.example.demo.dao=DEBUG, sqlappender

log4j.appender.sqlappender=org.apache.log4j.RollingFileAppender
log4j.appender.sqlappender.Append=true
log4j.appender.sqlappender.File=logs/sql.log
log4j.appender.sqlappender.MaxFileSize=10MB
log4j.appender.sqlappender.MaxBackupIndex=5
log4j.appender.sqlappender.layout=org.apache.log4j.PatternLayout
log4j.appender.sqlappender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t:%C{1}.%M(%L)]- [%p] %m%n

以上配置文件中,我们定义了两个Appender:stdoutsqlappender。其中stdout用于将日志输出到控制台,sqlappender用于将SQL语句记录到文件中。

第二步:在代码中打印SQL语句

1.在spring配置文件中开启日志输出:

<!--开启Spring SQL日志输出:statement、resultset使用log4j控制台输出-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
      destroy-method="close">
    <property name="url" value="${spring.datasource.url}" />
    <property name="username" value="${spring.datasource.username}" />
    <property name="password" value="${spring.datasource.password}" />
    <property name="filters" value="stat" />
    <property name="maxActive" value="20" />
    <property name="initialSize" value="1" />
    <property name="maxWait" value="60000" />
    <property name="minIdle" value="1" />
    <property name="timeBetweenEvictionRunsMillis" value="60000" />
    <property name="minEvictableIdleTimeMillis" value="300000" />
    <property name="validationQuery" value="select 1" />
    <property name="testWhileIdle" value="true" />
    <property name="testOnBorrow" value="false" />
    <property name="testOnReturn" value="false" />
    <property name="poolPreparedStatements" value="true" />
    <property name="maxPoolPreparedStatementPerConnectionSize"
              value="20" />
    <!-- 开启SQL日志输出 -->
    <property name="connectionProperties" value="druid.stat.slowSqlMillis=1000"/>
</bean>

以上代码中,我们在connectionProperties中增加了druid.stat.slowSqlMillis=1000配置,表示将SQL执行时间大于1秒的语句输出到日志中。

2.在相应的Dao方法中,添加如下代码,打印SQL语句:

import org.apache.ibatis.logging.LogFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class UserDaoImpl implements UserDao {

    private static final Logger LOGGER = LoggerFactory.getLogger(UserDaoImpl.class);

    // ...

    public User findUserByName(String name) {
        LOGGER.debug("find user by name: {}", name);
        return sqlSession.selectOne("com.example.demo.dao.UserDao.findUserByName", name);
    }

    // ...

}

以上代码中,我们使用LoggerFactory创建一个Logger对象,然后在查询方法中使用LOGGER.debug()打印出对应的SQL语句。

示例说明

1.示例一:使用控制台Appender输出日志

如果只是想要在IDEA控制台中查看日志输出,可以将log4j.rootLogger配置中的输出级别改为DEBUGTRACE,这样就能输出所有级别的日志。如下所示:

# root logger
log4j.rootLogger=DEBUG, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t:%C{1}.%M(%L)]- [%p] %m%n

2.示例二:将日志输出到文件

可以在log4j.properties文件中增加sqlappender,将SQL语句输出到logs/sql.log文件中。

# SQL logger
log4j.logger.com.example.demo.dao=DEBUG, sqlappender

log4j.appender.sqlappender=org.apache.log4j.RollingFileAppender
log4j.appender.sqlappender.Append=true
log4j.appender.sqlappender.File=logs/sql.log
log4j.appender.sqlappender.MaxFileSize=10MB
log4j.appender.sqlappender.MaxBackupIndex=5
log4j.appender.sqlappender.layout=org.apache.log4j.PatternLayout
log4j.appender.sqlappender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t:%C{1}.%M(%L)]- [%p] %m%n

这里定义了一个sqlappender,将com.example.demo.dao下的所有日志输出到logs/sql.log文件中。输出级别为DEBUG,格式和控制台输出相同,只是将日志内容输出到了文件中。

以上就是IDEA集成log4j将SQL语句打印在控制台上的实现操作的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:IDEA 集成log4j将SQL语句打印在控制台上的实现操作 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • spring boot使用@Async注解解决异步多线程入库的问题

    下面我来详细讲解 spring boot 使用 @Async 注解解决异步多线程入库的问题的完整攻略。 什么是 @Async 注解? @Async 注解是 Spring Boot 中用于实现异步调用的注解,使用 @Async 注解可以很轻松地将任务提交到 Spring 的线程池中,并利用多线程技术来提高处理能力。 如何实现异步多线程入库? 我们可以通过使用 …

    Java 2023年5月26日
    00
  • Maven多模块工程Module开发(图文教程)

    Maven多模块工程Module开发(图文教程)是一篇非常好的教程,它详细介绍了如何使用Maven进行多模块工程Module开发。下面是对该教程的完整攻略: 什么是多模块工程 多模块工程是一种由多个Maven项目组成的工程。每个子项目都独立的构建,然后这些子项目被一个父工程管理,父工程控制子项目的构建次序和构建参数。多模块工程是一种组织代码的方式,适合大型项…

    Java 2023年5月19日
    00
  • 详解Java在redis中进行对象的缓存

    下面请看“详解Java在redis中进行对象的缓存”的完整攻略: 1. 前置知识 Java操作Redis缓存需要用到Jedis,因此需要先引入相关的依赖包,如下: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifa…

    Java 2023年5月26日
    00
  • JDBC程序更新数据库中记录的方法

    下面是JDBC程序更新数据库中记录的方法的完整攻略。 更新数据 在JDBC程序中,更新数据使用UPDATE语句,具体步骤如下: 加载JDBC驱动程序 建立数据库连接 创建Statement对象或PreparedStatement对象 准备SQL语句 执行SQL语句 关闭数据库连接 下面是代码示例: // 加载JDBC驱动程序 Class.forName(&q…

    Java 2023年5月19日
    00
  • 什么是Java代码优化?

    Java代码优化指的是通过改进代码的设计、实现和运行等方面,使得Java程序的性能更高、消耗的资源更少,同时保证程序的正确性和可维护性。下面给出一个Java代码优化的使用攻略。 步骤一:明确优化目标 优化目标应该具体、明确、可衡量以及符合业务需求。可能的优化目标包括: 提高程序的运行速度,减少响应时间。 降低程序的系统资源消耗,例如CPU占用率、内存占用等。…

    Java 2023年5月11日
    00
  • Java,JSP,Servlet获取当前工程路径(绝对路径)问题解析

    下面我来详细讲解“Java,JSP,Servlet获取当前工程路径(绝对路径)问题解析”的完整攻略。 问题描述 在Java Web开发中,有时需要获取当前工程(Web应用)的路径,一般是为了将文件读取到项目中,或者是为了控制输出的文件路径。本文将解决以下两个问题: 如何在Java项目中获取当前工程路径 如何在JSP和Servlet中获取当前工程路径 获取当前…

    Java 2023年6月15日
    00
  • Java中获取文件大小的详解及实例代码

    下面是关于“Java中获取文件大小的详解及实例代码”的完整攻略: 一、获取文件大小的方法 Java中获取文件大小的方法,可以使用Java File类的length()方法,该方法返回文件的字节数,即文件大小。关于File类的length()方法详见Java文档:https://docs.oracle.com/javase/8/docs/api/java/io…

    Java 2023年5月20日
    00
  • 关于Java类的构造方法详解

    关于Java类的构造方法详解 类是Java的基本元素,而构造方法则是在创建类的实例时执行的一种特殊方法。本文将详细介绍Java类构造方法的相关知识以及使用技巧。 构造方法的定义 构造方法是一种特殊的方法,它的目的是在创建类的实例时执行一些初始化操作。一般情况下,构造方法和类的名称相同,不过它们没有返回值类型。在创建类的实例时,编译器会自动选择相应的构造方法并…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部