Grails Audit Logging:选择性审计和onChange方法

时间:2016-10-27 11:10:35

标签: grails auditing audit-logging

我们正在使用grails审核日志插件来审核项目中的少数域对象 https://grails.org/plugin/audit-logging

面对与之相关的几个问题:

  1. 我们有一个我们想要审核的用户域对象。 我们还在系统设置期间创建了大量用户。因此,当我们为User域生成auditable = true时,它也审核它 - 在audit_log_event表中为每个创建的用户创建一个新行。

    有没有办法避免这种情况?我们只想审核管理员用户创建/更新用户的时间(基本上是在管理员用户登录时)

  2. 对于我们正在审核的域对象的某些属性,我们希望对新值进行一些修改。 示例:假设User对象的电子邮件地址从a@gmail.com更新为b@gmail.com,然后我们要在new_value列中插入“*** B@gmail.com-12:23:47” audit_log_event表。

    我认为通过在onChange()方法中更新newMap [key]的值,我们可以做到这一点,但这似乎不起作用。 有没有办法做到这一点?

    试过这个:

  3. def onChange = {
               oldMap,newMap ->
                  println "User was changed ..."
    
                  oldMap.each({ key, oldVal ->
                     if(oldVal != newMap[key]) {
                        println " * $key changed from $oldVal to " + newMap[key]
    
                        if(key == "email") {
                            newMap[key] = "*****Some value udpated****"
                            println "email is now again changed ..."
                            println " * $key changed from $oldVal to " + newMap[key]
                        }
                     }
                  })
    }
    

    控制台输出:

       User was changed ...
        * email changed from a@gmail.com to b@gmail.com
       email is now again changed ...
        * email changed from a@gmail.com to *****Some value udpated****
    

    但是,在DB中:

    old_value = a@gmail.com
    new_value = b@gmail.com
    

0 个答案:

没有答案