Boa Noite,
Pessoal gostaria de saber como fazer log do sistema ou seja gravar que usuario entro em tal horario,
o que ele fez no sistema se cadastro produto se excluio produto e por ai vai, alguém tem alguma ideia ???
bjosS…
Boa Noite,
Pessoal gostaria de saber como fazer log do sistema ou seja gravar que usuario entro em tal horario,
o que ele fez no sistema se cadastro produto se excluio produto e por ai vai, alguém tem alguma ideia ???
bjosS…
“Ao escolher a opção remover”
“Realmente deseja remover? (SIM/NAO)”
“Sim: verificar banco de dados -> remover -> adicionar log ao banco de dados.”
Faça com que uma área do banco de dados tenha uma parte só de logs.
“Ao escolher a opção remover”
“Realmente deseja remover? (SIM/NAO)”
“Sim: verificar banco de dados -> remover -> adicionar log ao banco de dados.”Faça com que uma área do banco de dados tenha uma parte só de logs.
Como faço isso ???
“Ao escolher a opção remover”
“Realmente deseja remover? (SIM/NAO)”
“Sim: verificar banco de dados -> remover -> adicionar log ao banco de dados.”Faça com que uma área do banco de dados tenha uma parte só de logs.
Eu utilizo MySql
Você já utilizou o MySql para gravar alguma coisa?
Se sim: faça da mesma forma, apenas crie uma nova tabela utilizando agora apenas uma área para texto.
Se não: leia um pouco sobre insert/remove e o básico da ligação java -> mySql. Apos aprender a inserir qualquer informação no mySql você com certeza conseguirá fazer isso ai.
Obs.: não vou postar o código pq estou sem mySql aqui pra testar.
Talvez alguém possa dar para você um código pré-pronto ou informações melhores. Valeu 
Você já utilizou o MySql para gravar alguma coisa?Se sim: faça da mesma forma, apenas crie uma nova tabela utilizando agora apenas uma área para texto.
Se não: leia um pouco sobre insert/remove e o básico da ligação java -> mySql. Apos aprender a inserir qualquer informação no mySql você com certeza conseguirá fazer isso ai.
Obs.: não vou postar o código pq estou sem mySql aqui pra testar.
Talvez alguém possa dar para você um código pré-pronto ou informações melhores. Valeu
Sim eu sei como inserir valores no banco, logar no banco agora queria saber como faz para fazer log do que os usuarios fazem no sistema e se possivel exibir um relatorio sobre isto,
e isto deixaria o banco mais lento ??
Você não insere informações como: nome do produto, valor do produto…
Você vai ter que dividir o banco de dados em partes.
produto: |nomeDoProduto|valor|…
usuario: |nomedoUsuario|usuario|senha…
log: |data|texto|
Verifique qual usuário está logado e insira informações ao log.
“Ao clickar no botão remover:”
“Verifique o usuário, me retorne o seu nome” (função de pesquisa mySql)
String text = “nomeDoUsuario” + “removeu alguma coisa”.
Insira o text no “texto” do log.
Você não insere informações como: nome do produto, valor do produto…Você vai ter que dividir o banco de dados em partes.
produto: |nomeDoProduto|valor|…
usuario: |nomedoUsuario|usuario|senha…
log: |data|texto|Verifique qual usuário está logado e insira informações ao log.
“Ao clickar no botão remover:”
“Verifique o usuário, me retorne o seu nome” (função de pesquisa mySql)
String text = “nomeDoUsuario” + “removeu alguma coisa”.
Insira o text no “texto” do log.
Por exemplo para deletar eu uso DELETE FROM PRODUTOS WHERE codigo = ?
como seria para eu memorizar o usuario e a data que fizeram isso no banco???
muitas formas de se fazer isso, vou falar uma conhecida:
Trigger no Banco de dados.
você cria tabelas espelho das suas tabelas ex:
Tabela LogChamado referênte a tabela Chamado.
no próprio banco de dados, você cria uma trigger que sempre que alguem -. Incluir / Alterar / Excluir algum registro da tabela, seu trigger é ativado e ele é responsável por gravar a mesma informação na tabela espelho.
alguns exemplos no MYSQL
/* Trigger for INSERT */
CREATE TRIGGER HistoryTableInsert AFTER INSERT ON OriginalTable FOR EACH ROW BEGIN
DECLARE N DATETIME;
SET N = now();
INSERT INTO HistoryTable (Column1, Column2, ..., Columnn, StartDate, EndDate)
VALUES (NEW.Column1, NEW.Column2, ..., NEW.Columnn, N, NULL);
END;
/* Trigger for DELETE */
CREATE TRIGGER HistoryTableDelete AFTER DELETE ON OriginalTable FOR EACH ROW BEGIN
DECLARE N DATETIME;
SET N = now();
UPDATE HistoryTable
SET EndDate = N
WHERE Column1 = OLD.Column1
AND EndDate IS NULL;
END;
/* Trigger for UPDATE */
CREATE TRIGGER HistoryTableUpdate AFTER UPDATE ON OriginalTable FOR EACH ROW BEGIN
DECLARE N DATETIME;
SET N = now();
UPDATE HistoryTable
SET EndDate = N
WHERE Column1 = OLD.Column1
AND EndDate IS NULL;
INSERT INTO HistoryTable (Column1, Column2, ..., Columnn, StartDate, EndDate)
VALUES (NEW.Column1, NEW.Column2, ..., NEW.Columnn, N, NULL);
END;
Referência: http://en.wikipedia.org/wiki/Log_trigger
Se sua necessidade for meramente acadêmica, pra algum trabalho de faculdade ou parecido, implementar como foi sugerido do começo replicando a lógica de salvar o log em cada funcionalidade, é a maneira mais “direta” de fazer isso mesmo.
Mas se o objetivo for profissional, esses “cross-cutting concerns” como o log devem ser tratados de outras formas. Pode ser usado trigger, como foi dito acima. Ou se acabar sendo implementado na aplicação, talvez o melhor seja pensar em alguma forma de interceptor/aspecto para que a gravação do log seja “transparente” a programação das funcionalidades que se deseja logar. Resumindo, fazer com que a gravação do log seja “automática”, e não dependa da implementação direta das funcionalidades que estão sendo logadas.
Em tempos de JPA/Hibernate acredito que a estratégia mais comum seja criar um Listener ou Interceptor (eu particularmente gosto mais de usar triggers de banco).
Eu preciso do log para a area profissional levando em conta que tenho que chama eles depois no Ireport para exibir para o cliente para saber o que fez no sistema qual é o melhor caminho ???
o caminho mais conhecido, em várias linguagens é o trigger, eu faria por ele.
depois você cria uma classe para consultar os logs no banco…
Se sua necessidade for meramente acadêmica, pra algum trabalho de faculdade ou parecido, implementar como foi sugerido do começo replicando a lógica de salvar o log em cada funcionalidade, é a maneira mais “direta” de fazer isso mesmo.Mas se o objetivo for profissional, esses “cross-cutting concerns” como o log devem ser tratados de outras formas. Pode ser usado trigger, como foi dito acima. Ou se acabar sendo implementado na aplicação, talvez o melhor seja pensar em alguma forma de interceptor/aspecto para que a gravação do log seja “transparente” a programação das funcionalidades que se deseja logar. Resumindo, fazer com que a gravação do log seja “automática”, e não dependa da implementação direta das funcionalidades que estão sendo logadas.
Em tempos de JPA/Hibernate acredito que a estratégia mais comum seja criar um Listener ou Interceptor (eu particularmente gosto mais de usar triggers de banco).
Mas pelo fato da Trigger ser uma maneira profissional,
sou obrigado a usar ela mesmo quando não compense em relação
a custo/benefício por dinheiro pago pelo sistema?
Já vi uns projetos desktop que fazem o log de eventos no sistema
chamando diretamente tipo uma tabela Auditoria
e gravando nela (usuário, data, hora, tela, função efetuada [cadastrar, salvar, alterar, excluir], e outros campos).
Abraço.
Resolvido obrigado Gente…!
Mas pelo fato da Trigger ser uma maneira profissional,
sou obrigado a usar ela mesmo quando não compense em relação
a custo/benefício por dinheiro pago pelo sistema?Já vi uns projetos desktop que fazem o log de eventos no sistema
chamando diretamente tipo uma tabela Auditoria
e gravando nela (usuário, data, hora, tela, função efetuada [cadastrar, salvar, alterar, excluir], e outros campos).
Você está certo sim. O que eu quis dizer na verdade era a solução que faz parte da “curva de normalidade das boas práticas”. No mundo imperfeito que nos vivemos, exceções devem ser aplicadas para quase tudo 