我正在使用带有审计日志插件的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()事件条目吗?
提前致谢
答案 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())
}
}
}