как настроить log4j для Mybatis для печати моего SQL - PullRequest
15 голосов
/ 01 сентября 2011

Мой проект настроен с использованием 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 в консоли, кто-нибудь может мне помочь? спасибо большое

Ответы [ 3 ]

10 голосов
/ 10 сентября 2011

Ответ Джарадинора, вероятно, сработает. Но я думаю, что основная проблема связана с тем, как реализован класс MyBatis LogFactory. В статическом блоке он пытается загрузить slf4j, затем commmons-logging, затем log4j. Так что, если у вас есть путь регистрации общего доступа в вашем classpath, он будет использовать это. Поскольку вы используете Spring, у вас, вероятно, есть регистрация общего доступа.

Именно из-за подобных проблем я перешел на slf4j. Используйте slf4j-log4j12, чтобы slf4j вызывал log4j. Используйте jcl-over-slf4j для маршрутизации всей регистрации общих (и других) общих ресурсов в slf4j (а затем в log4j). Убедитесь, что вы исключили «настоящий» файл jar для регистрации общих файлов из вашего classpath, когда вы делаете это - возможно, с <exclude>, если вы используете Maven.

8 голосов
/ 09 сентября 2011

Я столкнулся с подобной проблемой.Следующий код помог мне (я использовал его в конфигурации класса mybatis):

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

Может вызвать проблемы с другой системой ведения журнала в вашем classpath.

5 голосов
/ 28 октября 2011

Вам необходимо поместить 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, как открытое соединение, выборка результатов, закрытиесоединения и т. д.

ура!

...