Oi pessoal,
Estou tentando registrar log operacional com algumas informações como: usuário logado, tempo de execução do método e as informações passadas como parâmetro. Vi alguns exemplos utilizando AOP e abordagem que eu encontrei foi de a criar uma classe genérica no caso um Service, implementar GroovyInterceptable e implementar o invokeMethod() para interceptar as chamadas aos métodos. A princípio funciona bem, porém a minha necessidade é de fazer isso com os Controllers e com os controllers o comportamento é diferente. Ele não consegue interceptar as actions, ele só consegue interceptar os métodos que são chamados dentro das actions. Alguém tem alguma idéia do que possa ser? Segue o link do exemplo:
http://java-groovy-grails-artist.blogspot.com.br/2010/08/implementing-aop-in-grails-services-via.html
Abraço
André R. Gomes, para interceptar as actions dos controllers você pode usar filter: http://docs.grails.org/2.4.x/guide/theWebLayer.html#filters . Mas parece que essa funcionalidade foi depreciada no Grails 3.0 para dar lugar aos interceptors.
Uma alternativa, que considero mais elegante, que implmentar o GroovyInterceptable em todas as classes é usando o Spring AOP. Esse post tem um exemplo bem bacana de como implementar isso numa aplicação Grails: http://joasgarcia.com/grails-executando-metodos-apenas-em-producao-usando-aop/