[SPRING] iBatis, spring, 실행되는 SQL을 어떻게 로그합니까?
SPRINGiBatis, spring, 실행되는 SQL을 어떻게 로그합니까?
스프링 프레임 워크로 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 또는 다른 것을 사용해야합니까? 아니면 iBatis SQL 로그를 얻기 위해 log4j 구성에서 할 수있는 것이 있습니까?
해결법
-
==============================
1.log4j 구성에 다음을 추가하십시오 (보고 싶은 부분의 주석 처리를 제거하십시오).
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
-
==============================
2.log4j.xml에 추가하십시오.
log4j.xml에 추가하십시오.
<logger name="com.ibatis" additivity="false"> <level value="debug"/> <appender-ref ref="APPENDER"/> </logger>
-
==============================
3.Log4j를 로깅 프레임 워크로 사용하는 경우, log4j를 기본 로깅 도구로 사용하도록 mybatis를 설정해야합니다. 이 작업은 mybatis-config.xml에서 이와 같이 설정할 수 있습니다.
Log4j를 로깅 프레임 워크로 사용하는 경우, log4j를 기본 로깅 도구로 사용하도록 mybatis를 설정해야합니다. 이 작업은 mybatis-config.xml에서 이와 같이 설정할 수 있습니다.
<setting name="logImpl" value="LOG4J"/>
또는 mybatis-config.xml과 주석 만 사용하지 않는 경우
org.apache.ibatis.logging.LogFactory.useLog4JLogging();
다른 mybatis 메소드를 호출하여 기본 로깅 구현을 설정하기 전에. 더 읽기 ...
이 구성은 log4j.properties에서 사용하십시오.
# Global logging configuration log4j.rootLogger=INFO, stdout # MyBatis mapper interfaces logging configuration... log4j.logger.com.sample.mappers=DEBUG # SqlMap logging configuration. log4j.logger.org.mybatis.spring=DEBUG log4j.logger.org.apache.ibatis=DEBUG # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%p] %c - %m%n
log4j.xml 설정을 사용하고 있다면 위와 같은 방법으로 시도해보십시오.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%p] %c{1} - %m%n"/> </layout> </appender> <logger name="org.mybatis.spring" additivity="false"> <level value="debug"/> <appender-ref ref="STDOUT"/> </logger> <logger name="com.sample.mappers"> <level value="debug"/> <appender-ref ref="STDOUT"/> </logger> <!-- Other custom 3rd party logger configs --> <root> <priority value ="debug" /> <appender-ref ref="STDOUT" /> </root> </log4j:configuration>
속성 파일 또는 xml 파일을 사용하여 위와 같이 log4j를 구성한 다음 클래스 패스에 배치하여 올바르게 작동하게하십시오.
-
==============================
4.이것을 log4j에 추가하십시오.
이것을 log4j에 추가하십시오.
<logger name="java.sql" additivity="false"> <level value="debug" /> <appender-ref ref="console" /> </logger>
이렇게하면 sql과 출력 결과가 출력됩니다.
from https://stackoverflow.com/questions/4082834/ibatis-spring-how-to-log-the-sql-that-is-executed by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring CaffeineCacheManager에 여러 개의 카페인로드 캐시가 추가되었습니다. (0) | 2019.05.30 |
---|---|
[SPRING] JSR-303 유효성 검사 그룹은 기본 그룹을 정의합니다. (0) | 2019.05.30 |
[SPRING] Spring rest controller에서 일반 json body에 액세스하는 방법은 무엇입니까? (0) | 2019.05.29 |
[SPRING] @PostConstruct 주석 및 스프링 수명주기 (0) | 2019.05.29 |
[SPRING] 스트럿을 사용하여 봄에 선택한 메뉴 강조 표시 (0) | 2019.05.29 |