如何在Hibernate + Spring中实现数据库操作日志记录

时间:2014-03-27 16:28:48

标签: spring hibernate

我希望能够在db中的每个inserte / update / delete中记录某个地方(可能是表)。我正在使用spring + hibernate。我愿意接受基于其中之一或两者的解决方案。

有什么想法吗?

修改

我不是指文本记录,而是实际拦截操作或让他们登录一些可以处理的数据结构。

2 个答案:

答案 0 :(得分:2)

如果记录到属性文件是可以的,只需添加log4j.xml配置:

<category name="org.hibernate.SQL" additivity="false">
    <priority value="trace"/>
    <appender-ref ref='file'/>
</category>

使用log4j.properties:

log4j.category.org.hibernate.SQL=TRACE, file

其中“file”是这样定义的appender:

log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=SOME_PATH/sql_log.log
log4j.appender.file.Append=true
log4j.appender.file.encoding=UTF-8
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss,SSS}  [%-9t]  %-5p  %c{1}.%m%n

答案 1 :(得分:0)

如果您不需要实际的SQL语句,则可以使用一个方面而不是DAO。这样您就可以拦截每个数据访问操作,并在DATA_ACCESS_LOG表中插入一个寄存器来描述操作和传递的参数。