JAVA에서 명령 줄 응용 프로그램을 개발 중입니다. 몇 가지 요인에 따라 MySQL 쿼리가 샌드 박스 MySQL 서버에서 실행되고 일부 수동 확인 후에 프로덕션 서버에서 쿼리를 실행해야합니다. 이 MySQL 쿼리를 샌드 박스 서버의 .sql 파일에 기록하고 나중에 스크립트를 사용하여 실행하려고합니다.MyBatis Java의 최종 MySQL 쿼리를 나중에 다른 서버에서 수동으로 실행하려면
스택 오버플로를 통해 검색을 시도했지만 쿼리를 로깅하는 예제가 많이 발견되었지만 기록 된 쿼리는 실행 된 최종 쿼리가 아닙니다. 예 :
Preparing: INSERT into table_name values(null, ?,?, ?,?,?, ?, ?,?);
DEBUG [pool-4-thread-1] - ==> Parameters: 21655(Integer), 2658413(Integer), 04:05:00(Time), null, 1565.0(Double), 3(String), (String), 0(Integer)
또한 쿼리는 직접 실행 가능한 형식으로 기록되지 않습니다.
내 log4j.properties 파일 :
log4j.rootLogger=INFO, stdout
log4j.logger.com.test.mappers.TableMapper=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
log4j.logger.java.sql.PreparedStatement=DEBUG, stdout
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.com.ibatis=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
내가 별도로 .SQL 파일에 정확한 최종 MySQL의 쿼리를 로그인 할 수 있습니까?
에 로거? –
@YCF_L 답장을 보내 주셔서 감사합니다. log4jdbc-log4j2를 사용하고 정확한 Mysql 쿼리를 별도의 파일에 기록하는 사용자 정의 로그 위임자를 사용하여 해결책을 찾았습니다. – Saheb
당신은 미래의 다른 사람들에게 도움이 될지도 모른다. –