viv*_*vek 6 logging spring spring-mvc 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>
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和值.我想避免这种方法.请建议.
我会说name="org.springframework.jdbc.core.JdbcTemplate"
非常"严格".试试这个类别:
org.springframework.jdbc
Run Code Online (Sandbox Code Playgroud)
小智 5
<Logger name="org.springframework.jdbc.core.JdbcTemplate" level="TRACE" additivity="false">
<Appender-Ref ref="db" />
</Logger>
Run Code Online (Sandbox Code Playgroud)
这肯定会起作用。调试和跟踪这两个级别都可以工作。唯一的问题是 JDBCTemplate 使用通用日志记录 API 来记录日志。如果您在应用程序中使用 log4j,则必须为其添加通用日志记录桥。
在 pom.xml 中添加以下内容
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.0-rc1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22333 次 |
最近记录: |