我有如下所示的 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的工作方式。我创建此文件是为了使用value
而不是?
显示 hibernate 查询,但仍然显示?
没有任何变化,所以我需要进一步处理吗?我从这里引用Hibernate show real SQL
最佳答案
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跟踪还使用'?'打印查询,但也打印参数绑定(bind),即'?'将由数据库驱动程序或服务器替换。