在hibernate中包含log4j属性文件,以显示带有值而不是问号的查询

com*_*mit 16 java hibernate log4j

我有crearte log4j.properties文件,如下所示:

log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.hql=debug
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug

log4j.appender.hb=org.apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.apache.log4j.PatternLayout
log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n
log4j.appender.hb.Threshold=TRACE
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我如何将其包含在hibernate.cfg.xml文件中吗?对不起,我实际上不知道log4j是如何工作的.我创建它来显示我的hibernate查询value而不是?但它仍然没有显示?任何变化所以我需要进一步继续吗?

我从这里参考Hibernate显示真正的SQL

Gee*_*nte 13

hibernate.cfg.xml中的"show_sql"属性会将查询直接打印到控制台.

Log4j允许在从控制台到文件到网络端口到数据库的任何位置记录输出.但是你所拥有的简单配置也应该在控制台上打印.因此,首先删除show_sql属性以查看Log4j是否在控制台上放置任何内容.

如果这不起作用,则表明Log4j配置不正确.如果你使用的是hibernate> 3.5,它会使用slf4j api,它默认使用logback而不是log4j.您可以通过从类路径中删除logback jar并轻松切换到log4j,然后添加slf4j-log4j12.jar和log4j.jar.

Log4j跟踪还使用'?'打印查询,但它也打印参数绑定,即'?' 将由数据库驱动程序或服务器替换.