一尘不染

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

hibernate

我有如下的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

有人可以帮助我将其包含在hibernate.cfg.xml文件中吗?抱歉,我实际上不知道log4j的工作方式。我创建它的目的是显示我的hibernate查询,value而不是?显示?任何更改,所以我需要进一步处理吗?

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


阅读 263

收藏
2020-06-20

共1个答案

一尘不染

hibernate.cfg.xml中的’show_sql’属性使查询直接打印到控制台。

Log4j允许将输出记录在控制台,文件,网络端口和数据库的任何位置。但是,您所拥有的简单配置也应该在控制台上打印。因此,首先删除show_sql属性,看看Log4j是否在控制台上放了任何东西。

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

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

2020-06-20