java 구현 - Mybatis가 내 SQL을 인쇄 할 수 있도록 log4j를 구성하는 방법



자바 종류 (4)

Jaradinor의 대답이 아마도 효과가있을 것입니다. 그러나 근본적인 문제는 MyBatis LogFactory 클래스가 구현 된 방식 때문이라고 생각합니다. 정적 블록에서 slf4j, commmons-logging, log4j를로드하려고 시도합니다. 그래서, 클래스 패스에 로거가 있다면, 그것을 사용할 것입니다. Spring을 사용하고 있기 때문에 아마도 commons-logging을 할 것입니다.

이런 문제 때문에 slf4j로 옮겼습니다. slf4j-log4j12 를 log4j로 호출하려면 slf4j-log4j12 를 사용하십시오. jcl-over-slf4j 를 사용하여 모든 Spring (및 기타) 공유 로그를 slf4j로 라우팅 한 다음 log4j로 라우팅하십시오. Maven을 사용하고 있다면 '진짜'commons-logging jar 파일을 classpath에서 <exclude> 시켜야합니다. 아마도 Maven을 사용한다면 <exclude> 를 사용하십시오.

내 프로젝트는 SpringMVC + Mybatis + EXTJS4로 설정됩니다. 이것은 내 구성입니다.

# Rules reminder:
# DEBUG < INFO < WARN < ERROR < FATAL

# Global logging configuration
log4j.rootLogger=DEBUG,stdout


log4j.logger.org.apache.ibatis=DEBUG,stdout
log4j.logger.java.sql=DEBUG,stdout 

#log4j.additivity.com.ibatis = false
#log4j.additivity.java.sql = false

## Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

하지만 콘솔에서 SQL을 출력하지 못합니다. 아무도 도와 줄 수 있습니까? 고마워요.


slf4j-api-xxx.jar, slf4j-log4j12-xxx.jar, log4j-over-slf4j-xxx.jar, log4j-xxx.jar (xxx를 버전으로 대체하십시오. 예 : 1.6.3)를 classpath와 src 패키지에 log4j.properties를 넣으십시오 (아래 참조).

log4j.debug=true

log4j.rootCategory=DEBUG

## uncoment when run in production ##
#log4j.threshold=INFO

# logger error
log4j.logger.br.danilo.psc.exceptions=ERROR, psc-error
log4j.appender.psc-error = org.apache.log4j.RollingFileAppender
log4j.appender.psc-error.File=c:\\log-psc\\error\\log-error.log
log4j.appender.psc-error.MaxFileSize=1200KB
log4j.appender.psc-error.MaxBackupIndex=40
log4j.appender.psc-error.layout=org.apache.log4j.PatternLayout
log4j.appender.psc-error.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss,SSS} [%-5p] %m %n
# end logger error

# logger debug
log4j.logger.br.danilo.psc=DEBUG, psc-debug
log4j.appender.psc-debug = org.apache.log4j.ConsoleAppender
log4j.appender.psc-debug.layout=org.apache.log4j.PatternLayout
log4j.appender.psc-debug.layout.ConversionPattern=[%d{HH:mm:ss}] %-5p %c{3} %x - %m%n
# end logger debug

### mybatis loggers ###
log4j.logger.com.ibatis=DEBUG, psc-debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG, psc-debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG, psc-debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG, psc-debug

# sql loggers
log4j.logger.java.sql.Connection=DEBUG, psc-debug
log4j.logger.java.sql.Statement=DEBUG, psc-debug
log4j.logger.java.sql.PreparedStatement=DEBUG, psc-debug
log4j.logger.java.sql.ResultSet=DEBUG, psc-debug

이 .properties를 사용하여 mybatis 및 sql의 모든 단계를 개방 연결, 결과 반입, 연결 닫기 등으로 기록합니다.

건배!


비슷한 문제가 발생했습니다. 다음 코드는 나를 도왔다. (mybatis 클래스 설정에서 사용했다.)

org.apache.ibatis.logging.LogFactory.useLog4JLogging(); 

클래스 패스에 다른 로깅 시스템이되는 문제가 발생할 수 있습니다.


public static Random RANDOM = new Random(System.nanoTime());

public static final float random(final float pMin, final float pMax) {
    return pMin + RANDOM.nextFloat() * (pMax - pMin);
}




java log4j mybatis