Re: LOG -> AOP?

Bôa, quem responder vai tirar uma dúvida minha também…

:lol:

A Paz!!

O que você pode fazer é criar um Advice que faça a inserção nas tabelas de
logs desejadas, e definir os Pointcuts em que este advice executará na sua
aplicação, mas tenha cuidado no que se relaciona a transação, para que você
somente faça log das operações, caso toda transação tenha sido efetuada
com sucesso.

Agora quanto ao framework que você utilizará, ae depende de como você
deseja integrar seus aspects em sua aplicação. Existem dois modos:
:arrow:“Online” - que que os bytecodes de seus aspect são acoplados aos
bytecodes de sua classe em Runtime(este exije uma configuração de seu
servidor);
:arrow:“Offline” - que realiza uma pós-compilação de suas classes(já compiladas
anteriormente), acoplando os bytecodes dos aspect nos bytecodes de suas
classes, em compile-time.

Eu utilizo o AspectWerkz, que tem evoluído bastante, principalmente em
termos de Java5, na versão 2.0.
http://aspectwerkz.codehaus.org

Mas ja me falaram bem do Nanning também, mas ainda não olhei.:oops:
http://nanning.codehaus.org

Para aprender um pouco de AspectWerkz, visite:
http://docs.codehaus.org/display/AW/Tutorials

Espero ter ajudado.
Abraço!

Se você estiver usando Hibernate pode ficar feliz por que é trivial fazer isso usando os Interceptors dele.

Senão minha sugestão é colocar pointcuts nas tuas data access classes e torcer para sempre conseguir determinar o comando/tabela/pk atravez do nome do método, da classe e os parâmetros.

Ou tem a opção radical, que é interceptar as chamadas jdbc da tua aplicação…

Isso pode ser algo que pode ser feito tanto como um interceptor do Hibernate como uma extensão ao seu DAO.

AOP é uma possibilidade tb.

Lembre-se que em alguma hora alguém vai te dizer que só quer gerar log da tab A, B ou C por questões de performance…

Tenho que fazer o sistema de LOG de um projeto que já está com 90% concluido.

O projeto, tem cerca de 30-40tabelas. Usando egen, struts, jdbc, Tomcat 4.1.x

Bem… como eu disse, tenho que fazer uma aplicação de LOG para quase todas as inserções, updates e deletes,

Todos os exemplos que vejo sobre AOP (DynAOP) fala sobre o clássico exemplo de LOG.

hum… agora vem as coisas ± ruins.

O LOG vai ser no banco de dados.
Quando por exemplo alguém vai subir de cargo, eu tenho que colocar que a pessoa foi de tal cargo, para tal cargo.
Quando acontece alguma coisa, tem uma frase específica para aquela ação.
Para quase todos os update, eu tenho que dizer como era, e como vai ser.
E pra tudo, eu tenho que colocar quem fez a determinada ação (de onde eu posso pegar da sessão).

Iae??
O que vcs sugerem? Usar AOP ou sair colocando em cada classe um código pra fazer o log?
Performance, manutenção, …