实现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:stdout
和sqlappender
。其中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
配置中的输出级别改为DEBUG
或TRACE
,这样就能输出所有级别的日志。如下所示:
# 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技术站