小编viv*_*vek的帖子

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

我使用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>
Run Code Online (Sandbox Code Playgroud)

在我们的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);
Run Code Online (Sandbox Code Playgroud)

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

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

logging spring spring-mvc spring-jdbc log4j2

6
推荐指数
2
解决办法
2万
查看次数

如何使用Log4j2 xml重写附加程序在登录文件之前修改LogEvent

我想在log4j2.xml文件中使用重写追加程序,以便在记录之前可以修改日志。我没有从Google获得太多帮助。根据log4j2文档,Rewrite是具有重写方法的接口,而MapRewritePolicy是实现类,当我运行该类时,我可以看到我的web3.log文件正在生成,但是看不到日志内容的任何修改。我看到了MapRewritePolicy源代码,并在我的项目中将本地实现类创建为MapRewritePolicyImpl.java,并放置了一些System.out来查看代码流从log4j2.xml文件进入此类。我已经修改了log4j2.xml以使用MapRewritePolicyImpl.java,但是代码流没有进入MapRewritePolicyImpl.java类。

<Rewrite name="rewrite" >
            <Appender-Ref ref="web3" />
             <MapRewritePolicyImpl">
                <KeyValuePair key="creditCard" value="new12345"/>
            </MapRewritePolicyImpl> 
        </Rewrite>



    <Configuration monitorInterval="5" status="debug" strict="true">
        <Appenders>
            <RollingFile name="web3" fileName="../logs/web3.log" 
                filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM-dd}/web3-%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>
            <Rewrite name="rewrite" >
                <Appender-Ref ref="web3" />
                 <MapRewritePolicy">
                    <KeyValuePair key="creditCard" value="new12345"/>
                </MapRewritePolicy> 
            </Rewrite>
    </Appenders>
    <Loggers>
        <Logger name="com.virginamerica" level="info" additivity="false">
            <!-- <Appender-Ref ref="web3" /> -->
            <Appender-Ref ref="rewrite"/>
        </Logger>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

java xml logging appender log4j2

2
推荐指数
1
解决办法
3784
查看次数

标签 统计

log4j2 ×2

logging ×2

appender ×1

java ×1

spring ×1

spring-jdbc ×1

spring-mvc ×1

xml ×1