gpt4 book ai didi

spring - 如何使用log4j2在记录文件中记录Spring JdbcTemplate SQL查询和数据库响应

转载 作者:行者123 更新时间:2023-12-04 13:39:38 26 4
gpt4 key购买 nike

我正在对数据库查询使用spring org.springframework.jdbc.core.JdbcTemplate和org.springframework.jdbc.core.simple.SimpleJdbcCall。我正在使用log4j2.xml进行日志记录。我想将所有SQL查询及其数据库结果记录在db.log文件中。

我尝试在log4j2.xml文件中使用以下记录器,但在db.log文件中未记录任何内容。我尝试了level =“TRACE”和level =“debug”,但都无法正常工作。

    <RollingFile name="db" fileName="${sys:catalina.home}/logs/db.log"
filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM-dd}/db-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout
pattern="%d{dd/MM/yyyy HH:mm:ss,SSS} [%X{cartID}] [%X{sessionId}] [%p] [%t] [%c] (%F:%L) - %m%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.springframework.jdbc.core.JdbcTemplate" level="TRACE" additivity="false">
<Appender-Ref ref="db" />
</Logger>

在我们的Java类中,我们使用以下sql
String sQuery = "select count(*) from impersonation_requests where ir_eid = ? and  ir_tmp_userid = ?";
String value = template
.queryForObject(sQuery, new Object[] { passwordInfo.getEid(),
passwordInfo.getUserId() }, String.class);

这里的var template是org.springframework.jdbc.core.JdbcTemplate的实例变量

我想在db.log文件中看到sQuery和值条目。
我们可以使用JdbcTemplate来实现这一点吗,还是需要在所有DAO类中实现logger,并在使用JdbcTemplate的每个类中记录sQuery和值。我想避免这种方法。请提出建议。

最佳答案

我想说name="org.springframework.jdbc.core.JdbcTemplate"非常“严格”。试试这个类别:

org.springframework.jdbc

关于spring - 如何使用log4j2在记录文件中记录Spring JdbcTemplate SQL查询和数据库响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22555284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com