Como vocês fazem seus log's

Buenas pessoal.
Como vocês fazem os log’s das aplicações de vocês ? (log’s de inserção, exclusão, alteração):

  • Uma tabela no próprio banco de dados ?
  • Opção anterior + salvando em arquivos no HD de tempos em tempos, compactando os mesmos, e limpando a tabela.
  • Uma nova base separada, com uma única tabela para esse propósito tendo em vista o rápido crescimento de informações nessa tabela ?
  • Em arquivos no HD, compactando a cada “n” tempo para que não fiquem diversos arquivos soltos ?

Caso a resposta seja a questão de aqruivos no HD, qual a melhor forma de pesquisa nesses arquivos. Por exemplo: Tenho em mãos o código auto-incremento de um determinado registro que foi alterado. Preciso consultar ele no log para saber o histórico de alterações e para isso vou ter que catar arquivo por arquivo (descompactando e compactdo) até localizar um que contenha essa informação.

Atualmente eu gravo em uma tabela no banco de dados, porém estou remodelando algumas coisas e o log é um dos principais assuntos :).

usa o log4j…ele cria um arquivo .log e para enviar mensagens de logo é bem simples


//cria um atributo para gravar o arquivo no arquivo de log
private Category log = null;

log = Log.getInstance("referencia", "arquivo.properties");

//grava uma mensagem
log.info("teste de log");

//Classe Log.java
public final class Log{

	private static Category log = null;

	
    public static Category getLogging(String referece, String arqProperty){
    	try{    	
			PropertyConfigurator.configure(SystemEx.convFilePath("./etc/" +  arqProperty));
			log = Category.getInstance(referece);
    	}catch(Throwable th){
    		th.printStackTrace();
    		System.exit(-1);
    	}    
		return log;
    }
}

Com isso vc consegue gerar arquivos de log…

Mias informações em http://logging.apache.org/log4j/docs/

[]'s

Usando POA, se for coisa bem simples. :smiley:

Eu acredito que seja simples. Meu objetivo é saber quantos registros o usuário lançou no mês (é uma dos pontos de avaliação utilizados). Os alterados e excluidos também vão contar, mas de forma diferente.
Além disso, quero poder consultar o log de alterações e exclusões para saber se alguém fez bobagem com alguma informação. :wink:

Eu acredito que seja simples. Meu objetivo é saber quantos registros o usuário lançou no mês (é uma dos pontos de avaliação utilizados). Os alterados e excluidos também vão contar, mas de forma diferente.
Além disso, quero poder consultar o log de alterações e exclusões para saber se alguém fez bobagem com alguma informação. ;)[/quote]

É razoavelmente fácil fazer sim! :smiley:

Aqui em alguns projetos usamos um banco de auditoria separado com uma estrutura de tabelas quase idêntica à estrutura do banco de produção. Em produção colocamos triggers que replica os dados inseridos e alterados no banco de auditoria. A diferença entre os bancos é que no de auditoria não tem índices e chaves primárias.

[]'s

Rodrigo Auler

Vc precisa desse histórico em banco de dados mesmo?

Tome cuidado que isso pode impactar na performance de sua aplicação.

A questão de usar no banco de dados é pela velocidade e facilidade de consulta. Mas eu vou criar um DB paralelo e as tabelas de auditoria neles, como citou o amigo anteriormente.
Porém esse novo banco não terá a mesma estrutura. Apenas uma tabela para relacionar o usuário ao registro incluido, alterado ou excuido e um campo que irá armazenar, no caso de alteração ou exclusão, o conteúdo do antigo registro e do novo registro se for o caso.

Se for por essas opções, é mais fácil salvar o arquivo em XML e utilizar o Chainsaw! Muito mais rápido e prático!

Link:
http://logging.apache.org/log4j/docs/chainsaw.html

ASOBrasil

Khaoz, faco exatamente o que voce faz…
Eu log em BD…
Mas vou te falar, que nunca pensei no que o boaglio falou…

Sera que existe uma forma mais correta de se fazer?

Auditoria é algo que o sistema precisa suportar? Ela precisa ser online? Grava em log e manda os caras auditarem esses arquivos, muito mais facil.

Logs de auditoria acabam sendo lidos somente de sistemas com exigencias legais de autitabilidade.