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日

相关文章

  • Java反射概念与使用实例代码

    Java反射是Java语言自带的一种强大的机制,允许在运行时动态地获取类的信息、访问或修改类的属性和方法等。本文将详细讲解Java反射的概念和使用,包含以下内容: 反射概述 反射实现方式 反射的作用与优缺点 反射使用的实例代码 反射概述 Java反射(Reflection)是Java语言中的一种机制。它可以让我们在运行时动态地获取类的信息、访问或修改类的属性…

    Java 2023年5月30日
    00
  • Java实现茶叶售卖商城系统(java+SSM+JSP+EasyUi+mysql)

    首先我们需要明确这个系统的功能和技术栈:Java实现茶叶售卖商城系统,技术栈包括Java、SSM框架、 JSP、EasyUI以及MySQL数据库。 下面将从需求分析、技术环境搭建、功能实现和项目测试等方面来进行讲解这个系统的攻略: 一、需求分析 在开始搭建系统之前,我们需要对系统的需求进行彻底的分析和定义,这样才能更好地实现系统的功能。 基于需求分析,我们可…

    Java 2023年5月24日
    00
  • Apache Kafka 分区重分配的实现原理解析

    Apache Kafka 分区重分配的实现原理解析 简介 Apache Kafka 是一个分布式的流数据处理平台,其中重要的一部分是分区(partition)机制。Kafka 的一个主题(topic)可以被分成多个分区,每个分区都可以被分配到不同的网络节点(broker)上进行处理。然而,Kafka 还需要在某些场景下重新分配分区。例如,网络节点加入或退出集…

    Java 2023年6月2日
    00
  • Java Collections.shuffle()方法案例详解

    Java Collections.shuffle()方法案例详解 在 Java 中,通常我们需要对数据集合进行一些元素的顺序处理,例如给一个列表的元素混淆顺序。Java Collections Framework 提供了许多工具类来帮助我们处理各种集合对象。其中,Collections 类拥有许多静态方法,其中 shuffle() 方法就是一种非常有用的工具…

    Java 2023年5月26日
    00
  • Java去除字符串中空格的方法详解

    Java去除字符串中空格的方法详解 在 Java 中,去除字符串中的空格是一个很常见的需求。本文将详细讲解如何实现去除字符串中空格的多种方法。 1. 使用replaceAll方法 replaceAll 方法是 String 类提供的方法,它可以将字符串中的一个字符或一组字符全部替换成另一个字符或一组字符。我们可以利用它来去除字符串中的空格。 下面是一个示例代…

    Java 2023年5月26日
    00
  • java实现简单的搜索引擎

    一、准备工作 在开始实现搜索引擎之前,需要准备以下工作: 编译环境:需要在本地安装JDK环境,并配置好对应的环境变量。 Maven管理工具:Maven是一个Java项目管理工具,能够自动下载所需的依赖库,并管理项目的编译、测试、打包等过程。 Lucene搜索引擎库:Lucene是一种高效的文本搜索引擎库,它提供了全文检索、模糊搜索、分词等功能,是实现搜索引擎…

    Java 2023年5月18日
    00
  • Spring Security 自定义授权服务器实践记录

    Spring Security 自定义授权服务器实践记录 本文将详细讲解如何使用Spring Security自定义授权服务器,并提供两个示例说明。 前置条件 在开始学习本文前,需要准备以下环境: JDK1.8或以上版本 Maven 3.0或以上版本 Spring Boot 2.0或以上版本 配置依赖 首先,需要在pom.xml中添加以下依赖: <de…

    Java 2023年6月3日
    00
  • 关于并发编程与线程安全的思考与实践

    作者:京东健康 张娜 一、并发编程的意义与挑战 并发编程的意义是充分的利用处理器的每一个核,以达到最高的处理性能,可以让程序运行的更快。而处理器也为了提高计算速率,作出了一系列优化,比如: 1、硬件升级:为平衡CPU 内高速存储器和内存之间数量级的速率差,提升整体性能,引入了多级高速缓存的传统硬件内存架构来解决,带来的问题是,数据同时存在于高速缓存和主内存中…

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