gpt4 book ai didi

Hibernate 记录太多信息

转载 作者:行者123 更新时间:2023-12-02 23:01:28 24 4
gpt4 key购买 nike

我在 log4j.properties 文件中有以下信息..

log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File = C:\\app\\file.log
log4j.appender.file.Threshold = TRACE
log4j.appender.file.DatePattern = '.'yyy-MM-dd
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d %5p [%C:%M:%L] - %m%n
log4j.rootLogger = DEBUG, file
#HIbernate logging
log4j.logger.org.hibernate.SQL = DEBUG, file
log4j.logger.org.hibernate.type = TRACE, file
log4j.additivity.org.hibernate.SQL = false

此配置的问题在于,它向日志文件写入了太多信息,并且文件在短时间内增长到 MB。所以我想知道是否有什么办法可以阻止 hibernate 弄乱日志文件并只写入 sql select 语句和参数而不写入其他内容。

最佳答案

您可以使用传递 Java JDBC 驱动程序,而不是真正冗长且不直观的 Hibernate SQL 日志记录,该驱动程序可以记录其他 JDBC 驱动程序的 SQL 和/或 JDBC 调用。

通过 JDBC 驱动程序的优点是,对于准备好的语句,记录的输出会将绑定(bind)参数自动插入到 SQL 输出中。这极大地提高了许多情况下的可读性、调试性和日志的大小。需要时可以生成 SQL 计时信息。

使用 hibernate 的日志记录,您的日志记录类似于:

 select bs0_.A_REF as A2_7_0_ from B bs0_ where  bs0_.other = 0 and bs0_.A_REF=?  
TRACE 2011-08- 03 00:30:45,317 binding '123' to parameter: 1

对于带有大量参数的大型查询,在数据库上手动执行查询之前替换所有绑定(bind)参数可能会很痛苦。

通过 JDBC 驱动程序,您的日志记录类似于:

select bs0_.A_REF as A2_7_0_ from B bs0_ where  bs0_.other = 0 and bs0_.A_REF=123  

所有绑定(bind)参数都已解析,您只需复制粘贴即可在数据库上执行查询。

您可以查看log4jdbc与 JDBC 驱动程序一样好。
要关闭 hibernate 日志记录,请务必将配置文件和所有 SQL 相关记录器中的 hibernate.show_sql 属性设置为 false。请参阅Logging Configuration引用文档部分

关于Hibernate 记录太多信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6963904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com