desenvolvi uma aplicação web SaaS na minha empresa utilizando JSF2, JPA2 e GlassFish3.1. Mas agora vi que preciso montar um esquema de logging pra por a aplicação no ambiente produção, porém não tenho nenhuma experiencia em estratégia de logging.
comecei estudando um pouco de log4j e montei um esquema simples que registra data, hora, nome e cpf do usuario logado e a respectiva mensagem tal como segue (o arquivo “rola” de 6 em 6 horas):
Mitidiero, os objetivos principais seriam dois: facilitar o rastreamento de erros (exceções) agilizando a implementação de uma solução; o outro objetivo seria monitorar as ações do usuario logado no que se refere a eventos envolvendo as regras de negócios mais importantes do sistema
parceiro, vc pode colocar parametros no contexto seguindo o modelo chave/valor atráves do método put() da classe org.apache.log4j.MDC. Quando vc configura o arquivo properties, vc referencia a chave, o respectivo valor vc coloca em tempo de execução.
Exemplo:
sobre a estratégia que criei, não disse que não é boa, disse que não tenho certeza se seria a mais adequada pra uma aplicação web, visto que nunca mexi com log4j
postei pra saber como o pessoal tem feito em situações como a minha
Para monitorar os usuários vc pode utilizar duas soluções:
1 - Um arquivo para cada usuário, como vc mesmo disse
2 - Um arquivo para cada funcionalidade do sistema, registrando quem fez, o que fez e etc… sempre de um modo padrão pra facilitar a busca.
Para solucionar a questão de exceções, eu recomendo fazer por funcionalidade e definindo o tipo de log, igual o log4j fornece, se é warning, se é crítico e etc.
No caso, o ideal é manter em 2 pastas separadas
SISTEMA e USUARIOS por exemplo.
Eu gosto de fazer dessa maneira e percebo muitas pessoas utilizando assim.
Eu faria diferente, se no caso monitorar o usuário faz parte da regra de negócio, eu criaria um model especifico e jogaria isso no banco pois poderia usar essas informações no meu sistema.
Agora para facilitar o rastreamento de erros (exceções) eu criaria um logger que gerasse um arquivo por dia,