Introdução
Se ocorrer um erro em um site ou sistema, é claro que é útil registrá-lo e mostrar ao usuário uma mensagem educada com um código de referência para o erro.
E se você possui muitos sistemas, não deseja que essas informações sejam distribuídas - é bom ter um único local centralizado para elas.
No nível mais simples, tudo o que é necessário é um ID de incremento e um despejo serializado dos detalhes do erro. (E, possivelmente, o "local centralizado" é uma caixa de entrada de e-mail.)
No outro extremo do espectro, talvez haja um banco de dados totalmente normalizado que também permita que você pressione um botão e veja um gráfico de erros por dia ou identifique qual é o tipo de erro mais comum no sistema X, se o servidor A possui mais banco de dados. erros de conexão que o servidor B e assim por diante.
O que estou me referindo aqui é registrar erros / exceções no nível do código por um sistema remoto - não o rastreamento de problemas "baseado em humanos", como feito com Jira, Trac, etc.
Questões
Estou procurando pensamentos de desenvolvedores que usaram esse tipo de sistema, especificamente com relação a:
- Quais são os recursos essenciais que você não pode prescindir?
- O que é bom ter recursos que realmente economizam seu tempo?
- Quais recursos podem parecer uma boa ideia, mas não são realmente úteis?
Por exemplo, eu diria que uma função "show duplicates" que identifica a ocorrência múltipla de um erro (sem se preocupar com detalhes 'sem importância' que possam diferir) é bastante essencial.
Um botão para "criar um problema no [Jira / etc] para esse erro" parece uma boa economia de tempo.
Apenas para reiterar, o que estou procurando são experiências práticas de pessoas que usaram esses sistemas, de preferência com o motivo pelo qual um recurso é incrível / terrível.
(Se você for teorizar de qualquer maneira, marque no mínimo sua resposta como tal.)
fonte
Respostas:
Eu estive em um projeto em que com erros de cliente registrados usando a biblioteca Microsoft Enterprise . Todas as exceções são enviadas para nossa caixa de correio. No assunto do email, adicionamos código hash de erro serializado para evitar mensagens duplicadas. Obviamente, é possível armazenar mensagens serializadas no banco de dados e assim por diante.
Eu recomendo que você verifique a biblioteca Microsoft Enterprise e o Log4Net .
Alguns recursos do Log4Net
fonte
No caso de aplicativos de banco de dados, algum tipo de ID (como
<TABLE>:<PrimaryKeyID>
) que permite rastrear os registros no banco de dados relacionados ao escopo em que a exceção foi capturada.Eu fiz isso com Oracle e PL / SQL, gravando o ID em uma tabela de banco de dados dentro do aplicativo, a partir do manipulador de exceções.
fonte
Muito do que você descreve (por exemplo, as partes específicas do log) é implementado na biblioteca corporativa, como observou Amir Rezaei. Tudo o resto parece ser mais parte da análise (ou seja, o que fazer com os logs posteriormente).
No meu caso, criei alguns aplicativos pequenos e scripts sql que facilitaram algumas coisas. Aqui estão algumas das coisas que eu realmente gostei:
fonte
Às vezes, as informações do log são muito volumosas para serem armazenadas no disco. Uma abordagem que eu vi é escrever suas entradas de log em uma mangueira de incêndio (em, digamos, perl) algo como isto:
então um analista pode dar uma olhada no que ele / ela quer ver.
fonte
Aqui estão algumas coisas que aprendi com o monitoramento de erros em nossos aplicativos:
Eu tive ótimos resultados para o log4net porque facilita muito o log em vários locais e facilita também as alterações na configuração do log.
fonte
elmah é um sistema de registro de erros de código aberto para aplicativos ASP.NET e pode ser adicionado a um sistema existente (usando o NuGet http://nuget.codeplex.com/ ) de maneira rápida e fácil. Ele suporta várias funções de back-end e notificação.
Não conheço ninguém que o tenha adicionado a um aplicativo de desktop, pois ele é executado como um site, mas não há nada que impeça você de executá-lo como um serviço e postar suas exceções na Web.
http://code.google.com/p/elmah/
fonte