LOG -> AOP ?  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
New__Radical
JavaEvangelist
[Avatar]

Membro desde: 17/08/2003 16:34:45
Mensagens: 361
Offline

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, ....

Ow vida difícil!
[Email] [ICQ]
paulohbmetal
GUJ Ranger
[Avatar]

Membro desde: 28/08/2003 18:19:45
Mensagens: 760
Localização: Goiânia - Goiás
Offline

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



A Paz!!

Paulo Melo
JavaMetal - GoJava - JavaFree.org - Ubuntu Linux - Rising Cross
Sun Certified Java Programmer
Bacharel em Ciência da Computação
Especialista em Análise e Projetos de Sistemas de Informação
________________________________
"Que a cruz sagrada seja minha luz!!"
[Email] [WWW]
Alexandre
JavaEvangelist
[Avatar]

Membro desde: 05/09/2002 23:25:11
Mensagens: 431
Localização: Sydney - Australia
Offline

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:
"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);
"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.
http://nanning.codehaus.org

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

Espero ter ajudado.
Abraço!

amartinsn [at] gmail.com

http://flickr.com/photos/alexmartins

[Email] [Yahoo!] [MSN]
Anonymous



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...
FApache
Smalltalk
[Avatar]

Membro desde: 26/12/2004 21:21:17
Mensagens: 3
Offline

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...

Forte Apache
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team