在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 链接
编辑: –
- 为了设置日志记录,您需要在类路径中使用slf4j-api.jar以及首选绑定的jar文件 – 在Log4J的情况下为slf4j-log4j12.jar。
- 将log4j.properties文件放在类路径中。 一个示例属性文件与siber /目录中的Hibernate一起分发。
-
启用以下日志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给出的代码
如果您的项目有1000个查询打印到控制台,请将其他查询设为false:
或者将一个appender写入我在我的项目中完成的log4j.xml,只是为了在这里指定的单独文本文件上编写所有SQL查询: 使用Log4j XML配置文件配置Hibernate日志记录?
- Hibernate在单个表中对复合外键和主键进行一对一映射
- JPA / Hibernate Embedded id
- 需要一个Hibernate中主键@OneToOne映射的示例
- SpringBoot 1.3.0支持hibernate 5吗?
- 基于日期的ehcache
- struts2 + hibernate3 + jasper-report 5.0 —得到空白报告
- java.lang.NoClassDefFoundError:无法初始化类org.hibernate.ejb.Ejb3Configuration
- 测试DAO时出错:sun.reflect.generics.reflectiveObjects.TypeVariableImpl无法强制转换为java.lang.Class
- Hibernate为每个查询生成不同的SQL