grails - 为用户登录插入审核日志记录条目

我正在将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)在此域类中定义为属性的username属性显示为null
2)它抛出一个异常说:No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
这里还有其他方法吗?
还可以使用插件audi_log表填充我的onLoad()事件条目?

提前致谢

最佳答案

在事务中包装逻辑:

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())
      }
    }
}

https://stackoverflow.com/questions/9659174/

相关文章:

grails - 从 map 的特定值的下拉列表中设置值

grails - 如何从 grails 查询中访问属性

grails - 在运行应用程序完成后,grails应用程序会自动连续自动重新加载

grails - User.get()在Grails 2.0中损坏,返回null

grails - Grails 中是否有首选/标准方式将表单参数绑定(bind)到域对象列表?

grails - Grails url映射从sperate配置文件传递数据

grails - 标准的单元测试模拟

hibernate - 复合键另存为null

grails - 对grails的 Ant 调用因 “[exec] Application is p

grails - Grails的 Controller