我有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是如何工作的。我创建此项以使用value
而不是?
显示我的hibernate查询,但仍显示?
没有任何更改,因此我需要进一步继续?
答案 0 :(得分: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跟踪还使用'?'打印查询,但它也打印参数绑定,即'?'将由数据库驱动程序或服务器替换。
答案 1 :(得分:3)
请根据您的版本参考hibernate参考。这是3.3 Link
编辑: -
启用以下日志4j类别。
org.hibernate.SQL Log all SQL DML statements as they are executed org.hibernate.type Log all JDBC parameters
答案 2 :(得分:2)
在大多数情况下,在应用程序的类路径中包含log4j.properties
就足够了。
请参阅How to initialize log4j properly?。
有问题的链接suggests你应该在不同的日志语句中查找sql文本中绑定的sql param值,如下所示:
TRACE [BasicBinder] binding parameter [1] as [VARCHAR] - john doe
。
但我建议坚持使用log4jdbc。它使用起来非常简单。并且它能够在打印的sql文本中内联查询参数值。
答案 3 :(得分:2)
另外添加
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
你的问题将得到解决。
答案 4 :(得分:0)
无需添加hibernate.cfg.xml,只需将其放入classpath并按照此链接中提到的步骤操作即可。 请参阅此链接: - http://makecodeeasy.blogspot.in/2013/03/logger-in-spring-web-application.html
答案 5 :(得分:0)
您无法内联打印值。 Hibernate总会打印出来的?记录查询时在DEBUG级别记录的org.hibernate.type输出显示了用于替换这些问号的值和类型。
答案 6 :(得分:0)
我喜欢使用jdbcdslog代理进行sql日志记录远远超过hibernate日志记录。
答案 7 :(得分:0)
在我的情况下,不是hibernate.cfg.xml ,它是 log4j.xml 文件,其中我放了@jdev给出的代码
&LT; property name =“show_sql”&gt; true 显示SQL查询
&LT; property name =“format_sql”&gt; true 格式化控制台上显示的查询
&LT; property name =“use_sql_comments”&gt; true 评论将添加到查询中
如果您的项目有1000个查询打印到控制台,请使其他人错误: &LT; property name =“show_sql”&gt; true &LT; property name =“format_sql”&gt; false &LT; property name =“use_sql_comments”&gt; false
或者将 appender 写入我在项目中完成的log4j.xml,只是将所有SQL查询写在这里指定的单独文本文件中: Configuring Hibernate logging using Log4j XML config file?