如何使用log4j2在日志文件中记录spring JdbcTemplate sql查询和数据库响应

时间:2014-03-21 09:49:01

标签: spring spring-mvc logging spring-jdbc log4j2

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

我曾尝试在log4j2.xml文件中使用以下logger,但它没有在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模板是org.springframework.jdbc.core.JdbcTemplate的实例变量

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

2 个答案:

答案 0 :(得分:7)

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

org.springframework.jdbc

答案 1 :(得分:3)

<Logger name="org.springframework.jdbc.core.JdbcTemplate" level="TRACE" additivity="false">
      <Appender-Ref ref="db" />
</Logger>

这肯定会奏效。调试和跟踪两个级别将工作。唯一的事情是JDBCTemplate使用common-logging API来记录。如果您在应用程序中使用log4j,则必须为此添加常用的日志记录桥。

在pom.xml中添加以下内容

 <dependency>
     <groupId>org.apache.logging.log4j</groupId>
     <artifactId>log4j-jcl</artifactId>
     <version>2.0-rc1</version>
 </dependency>