插入审核日志条目以进行用户登录

时间:2012-03-11 21:44:52

标签: grails audit-trail audit-logging

我正在使用带有审计日志插件的grails 1.3.7。我想在日志中捕获用户登录事件,如“user:PSam登录...”,因为插件没有定义onLoad事件,我将其添加到域类并填充我自己的审计表条目在这种情况下。 所以在grails用户域类中我做如下

def onLoad = { 
        try {
         Graaudit aInstance = new Graaudit();
         aInstance.eventType= "User Log in"
         aInstance.eventDescription = "User logged in"
         aInstance.user_id = username
         aInstance.save(flush:true);
          println "username="+username
          println aInstance;
        }
        catch (e){
            println(e.getMessage())
        }
    }

我这里有两个问题...... 1)在此域类中定义的用户名属性作为属性将变为null 2)它抛出一个异常说:No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

这里有另一种方法吗? 还可以使用插件audi_log表来填充我的onLoad()事件条目吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

在交易中包裹您的逻辑:

def onLoad = { 
   Graaudit.withTransaction {
      try {
       Graaudit aInstance = new Graaudit();
       aInstance.eventType= "User Log in"
       aInstance.eventDescription = "User logged in"
       aInstance.user_id = username
       aInstance.save();
        println "username="+username
        println aInstance;
      }
      catch (e){
        println(e.getMessage())
      }
    }
}