在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 

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

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

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跟踪还使用’?’打印查询,但它也打印参数绑定,即’?’ 将由数据库驱动程序或服务器替换。

请根据您的版本参考hibernate参考。 这是3.3 链接

编辑: –

  1. 为了设置日志记录,您需要在类路径中使用slf4j-api.jar以及首选绑定的jar文件 – 在Log4J的情况下为slf4j-log4j12.jar。
  2. 将log4j.properties文件放在类路径中。 一个示例属性文件与siber /目录中的Hibernate一起分发。
  3. 启用以下日志4j类别。

     org.hibernate.SQL Log all SQL DML statements as they are executed org.hibernate.type Log all JDBC parameters 

在大多数情况下,在应用程序的类路径中包含log4j.properties应该足够了。

请参见如何正确初始化log4j? 。

有问题的链接已经建议你应该在不同的日志语句中查找不在sql文本中的绑定sql param值,如下所示: TRACE [BasicBinder] binding parameter [1] as [VARCHAR] - john doe

但我建议坚持使用log4jdbc 。 它使用起来非常简单。 并且它能够在打印的sql文本中内联查询参数值。

也加上这个

 true true true 

你的问题将得到解决。

无需添加hibernate.cfg.xml,只需将其放在classpath中并按照此链接中提到的步骤操作即可。 参考此链接: – http://makecodeeasy.blogspot.in/2013/03/logger-in-spring-web-application.html

您无法内联打印值。 Hibernate总会打印出来的吗? 记录查询时。 在DEBUG级别记录的org.hibernate.type的输出显示用于替换这些问号的值和类型。

我喜欢使用jdbcdslog代理进行sql日志记录远远超过hibernate日志记录。

记录与数据库通信的SQL

在我的情况下它不是hibernate.cfg.xml ,它是log4j.xml文件,我放了@jdev给出的代码

true 显示SQL查询

true 格式化控制台上显示的查询

将在查询中添加 真正的 注释

如果您的项目有1000个查询打印到控制台,请将其他查询设为false: true false false

或者将一个appender写入我在我的项目中完成的log4j.xml,只是为了在这里指定的单独文本文件上编写所有SQL查询: 使用Log4j XML配置文件配置Hibernate日志记录?