如何在审计日志插件中创建值对于凡人来说可读?

时间:2012-06-06 17:20:52

标签: grails

仅仅是凡人,我指的是系统用户(非开发人员)。审计日志插件很漂亮,但困扰我的一件事是我无法为我们的客户定制它。例如,我没有显示哪些字段被更改的表格,而是将其转换为普通人可以轻松阅读的句子。问题是,我如何使用eventlisteners做到这一点?描述中的示例执行我想要的我只是不知道如何将其传递给控制器​​并在gsp中显示它。我不能告诉你somr示例代码,因为我现在正在打电话。所以也许以后我回到家里。 抱歉任何想法如何实现它?

1 个答案:

答案 0 :(得分:5)

我做了类似的事情,不是通过更改插件记录更改的方式,而是通过创建从审计日志记录对象中读取以显示历史记录的TagLib。然后将TagLib放在要显示历史记录的任何页面上,并将其传递给对象ID。

//Import into your TagLib
import org.codehaus.groovy.grails.plugins.orm.auditable.AuditLogEvent


//Basic TagLib idea
def objectHistory = {attrs->
    if(attrs.persistedObjectId) {
        def events = AuditLogEvent.findAllByPersistedObjectId(attrs.persistedObjectId, [sort:"dateCreated",order:"desc"])
        if(events.size() > 0) {
          events.each{event->
            out << event.propertyName
            out << ' changed on '
            out << event.dateCreated
            out << 'The old value was '
            out << event.oldValue
            out << ' and the new value is '
            out << event.newValue
          }
        }
    }
}

并且假设您有一个页面显示有关公司的信息:

<g:objectHistory persistedObjectId="${companyInstance.id}" />

您可以非常了解TagLib如何显示数据,忽略某些事件,显示更改者(event.actor)等等。

相关问题