java - iBatis,spring,如何记录执行的sql?

标签 java spring logging ibatis

我正在使用带有 spring 框架的 iBatis。我想记录 iBatis 在我说类似

时执行的 sql
Employee e = (Employee) getSqlMapClientTemplate().queryForObject("emp_sql", emp);

以上行将在我拥有的 ibatis sql 文件中查找“emp_sql”id。然后运行与“emp_sql”对应的查询。我想记录这个查询。

我有以下 log4j xml 属性文件。

<appender name="sqlLogAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="file" value="/disk1/logs/sql.log"/>
    <param name="datePattern" value="'-'yyyy-MM-dd'.txt'"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m %n"/>
    </layout>
   <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG"/>
    </filter>
</appender>

<logger name="log4j.logger.com.ibatis">
    <level value="DEBUG"/>
    <appender-ref ref="sqlLogAppender"/>
</logger>


<logger name="log4j.logger.java.sql.Connection">
    <level value="DEBUG"/>
    <appender-ref ref="sqlLogAppender"/>
</logger>

<logger name="log4j.logger.java.sql.PreparedStatement">
    <level value="DEBUG"/>
    <appender-ref ref="sqlLogAppender"/>
</logger>

我仍然无法获取ibatis执行的sql。 是不是配置有问题? 我应该说

<appender name="sqlLogAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="file" value="/disk1/logs/sql.log"/>
    <param name="datePattern" value="'-'yyyy-MM-dd'.txt'"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m %n"/>
    </layout>
   <filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG"/>
    </filter>
</appender>

<logger name="log4j.logger.java.sql">
    <level value="DEBUG"/>
    <appender-ref ref="sqlLogAppender"/>
</logger>

我必须使用 p6spy 还是别的什么?或者我可以在 log4j 配置中做些什么来获取 iBatis sql 日志?

最佳答案

将以下内容添加到您的 log4j 配置中(取消注释您想要查看的内容)。

# SqlMap logging configuration.
#log4j.logger.com.ibatis=DEBUG
#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
#log4j.logger.java.sql=DEBUG
#log4j.logger.java.sql.Connection=DEBUG
#log4j.logger.java.sql.Statement=DEBUG
#log4j.logger.java.sql.PreparedStatement=DEBUG
#log4j.logger.java.sql.ResultSet=DEBUG

关于java - iBatis,spring,如何记录执行的sql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4082834/

相关文章:

JAVA:如何在特定时间后停止函数的执行?

java - Spring Boot - 可以拦截@Async 服务方法吗?

java - Jersey REST 请求对象更改

Java hibernate如何持久保存没有关系的实体列表?

spring - 如何使用 spring writer 将 EBCDIC byte[] 写入文件?

python - 如何在 Python 日志记录配置文件中指定相对路径?

spring - 记录 @Controller 请求 Spring Boot

java - Stacktrace 感知 grep

java - ChromeDriver Selenium 出现 "java.lang.module.InvalidModuleDescriptorException: Provider class org.apache.bsf.BSFManager not in module"错误

java - AVL 树给我 O(c^n) 而不是 O(log n)