Log de Usuários em um Sistema Web

6 respostas
L

Fala Galera do GUJ!

Estou dando uma estudada em Log de Usuários e queria saber o que voces acham sobre este tema. Desenvolvemos um Sistema Web que é encarregado de interagir com o nosso banco de dados para gerenciar(adição, exclusão, consulta) de várias funcionalidades. E agora precisamos implementar um log de atividades para saber quem fez o que: Ex: Quando e quem adicionar o usuário x, quando apagaram o grupo y, etc…

Dando uma pesquisada na web sobre Log de atividades dos usuários, encontrei duas diferentes abordagens: a primeira seria criar uma tabela específica para isso e nela gravaríamos o usuário, data, operação realizada e em alguns foŕuns que li o pessoal sugeriu acrescentar o sql usado. Na segunda opção seria criar nas tabelas que o meu sistema utiliza novos campos para identificar os logs dos usuários que mexeram naquele registro, como campo para quem mexeu, quando, qual operação (update, add, delete, por exemplo).

Gostaria de saber a opinião de voces sobre este tema e o que voces mais aconselham como boas práticas.

Desde já agradeço a atenção.

Abraços,
Leonardo Nickel

6 Respostas

nbluis

Vai depender do nivel de log que vc precisa implementar.
Por exemplo.
Se precisa apenas da data e do usuário da ultima alteração, utilizam muito na mesma tabela do registro.
Agora, se precisa armazenar as alteções ou até o estado anterior do objeto dai vai precisar ser algo mais enxuto.

P

eu utilizo dos 2 casos, eventualmente. O q quero dizer com isso?!

Tenho uma tabela responsável pelos logs…porem em ALGUMAS tabelas eu tenho alguns dados como data de criacao do registro e o usuario q o criou por exemplo…isso como forma de agilizar algumas pesquisas…ja q minha tbl de LOG eh mais extensa…e é nela q eu gravo absolutamente TUDO…

flw

L

nbluis,

valew pela resposta!

Como estou estudando sobre estas coisas, ainda não sei dizer se vamos armazenar apenas a ultima operação naquele registro ou se vamos armazenar um histórico. Acredito que o mais correto seria armazenar um histórico para termos como saber de todas as operações, mas fazendo assim eu acho que dá mais trabalho também.

O que voces acham que é tendência desse tipo de funcionalidade?

E outra coisa, na maioria dos lugares que achei sobre este tema, o pessoal insere esses logs via trigger diretamente no banco, e aqui vamos deixar esta lógica na aplicação. Estava pensando em utilizar interceptor para isso. Alguma ressalva quanto a isso?

nbluis

Eu optaria por AOP(seu interceptor) mesmo.

Quanto ao nível, vai depender da criticidade de seus dados.
Mas certamente vai dar bastante trabalho fazer um log completo.
Se não necessita disso, fuja e faça algo simples que resolva seu problema.

P

O exemplo classico de POA - Programação Orientada a Aspecto é de como implementar um log que intercepte os métodos de uma classe, mas vai dar um trampo hein, e deve-se tomar muto cuidado com POA, principalmente na documentação dos sistemas, pois um novo programador que passe a compor a equipe pode fazer algumas cagadas facil…facil se não houver uma boa documentação.

Dependendo… triger não seria uma solução ruim? Qual o banco de dados que vc esta utilizando ???

L

verdade, esse conceito de POA se nao bem compreendido pode dar mais problemas do que benefícios.

Quanto ao nível, não precisaria ser algo tão específico, axo que um log simples de quando o registro foi criado, alterado, removido, por quem e qual registro já seria um grande começo.

Aqui utilizamos Oracle 10g…

Valew ae por todos os comments :smiley:

Criado 10 de dezembro de 2007
Ultima resposta 10 de dez. de 2007
Respostas 6
Participantes 4