Pergunta

Estou procurando a melhor maneira de registrar erros em um aplicativo ASP.NET.Quero poder receber emails quando ocorrerem erros na minha aplicação, com informações detalhadas sobre a Exceção e a Solicitação atual.

Na minha empresa tínhamos nosso próprio ErrorMailer, capturando tudo no Global.asax Application_Error.Foi "Ok", mas não muito flexível nem configurável.

Mudamos recentemente para NLog.É muito mais configurável, podemos definir diferentes alvos para os erros, filtrá-los, armazená-los em buffer (ainda não tentei).É uma melhoria muito boa.

Mas descobri recentemente que existe todo um Namespace no framework .Net para essa finalidade: Sistema.Web.Management e pode ser configurado no saúdeMonitoramento seção de web.config.

Você já trabalhou com monitoramento de saúde .Net?Qual é a sua solução para registro de erros?

Foi útil?

Solução

Eu uso elmah . Ele tem algumas características realmente agradáveis ??e aqui é um href="http://www.codeproject.com/KB/aspnet/ELMAHDemo.aspx" rel="noreferrer"> CodeProject artigo nele. Eu acho que os usos da equipe StackOverflow elmah também!

Outras dicas

Eu tenho usado Log4net , configurado para detalhes de e-mail de erros fatais. Ele também é configurado para registrar tudo em um arquivo de log, que é de valor inestimável ao tentar depurar problemas. O outro benefício é que, se essa funcionalidade padrão não faz o que você quer que ele, é bastante fácil de escrever uma appender personalizado que pode processar as informações de registro, conforme necessário.

Dito isto, estou usando este em conjunto com um manipulador de erro personalizado que envia um e-mail html com um pouco mais informação do que está incluído no e-mails padrão log4net - página, variáveis ??de sessão, cookies HTTP variáveis ??de servidor, etc.

Estes são os dois fios para cima em caso Application_OnError, onde a exceção é registrada como uma exceção fatal em log4net (que, em seguida, faz com que ele ser enviado para um endereço de e-mail especificado), e também tratadas usando o manipulador de erro personalizado.

Primeiro ouviu falar sobre Elmah a partir da entrada Horror blogue Codificação, Bater com responsabilidade , e embora pareça promissor ainda estou para implementá-lo todos os projetos.

Estou usando objetos de Registro de Empresa Biblioteca. Ele permite que você tem diferentes tipos de log (arquivos simples, e-mail e / ou banco de dados). É muito personalizável e tem uma interface bastante bom para atualizar seu web.config para a configuração do registro. Normalmente eu chamo o meu logging do On Error no Global.asax.

Aqui está um link para o MSDN

Eu uso log4net e onde quer que eu esperar uma exceção I registrá-lo para o nível apropriado. Eu não tendem a re-lançar a exceção, porque ele realmente não permitir as-agradável experiência do usuário, há menos informação que você pode fornecer para o estado atual.

Vou ter Application_Error também configurado para capturar qualquer exceção que não era esperado e o erro é registrado como uma prioridade Fatal através log4net (bem, 404 de são detectados e registrados como Informações como eles não são tão alta gravidade).

A minha equipe usa log4net de Apache. É muito leve e fácil de configurar. O melhor de tudo, é completamente configurável a partir do arquivo web.config, então quando você tem os ganchos em sua configuração de código, você pode mudar completamente a forma como o registo é feito apenas alterando o arquivo web.config.

log4net suporta registro para uma ampla variedade de locais - banco de dados, e-mail, arquivo de texto, log de eventos do Windows, etc. A minha equipa tem-configurado para enviar informações de erro detalhadas para um banco de dados, e também enviar um e-mail para toda a equipe com informação suficiente para nós para determinar em que parte do código do erro originou. Então nós sabemos quem é responsável por esse pedaço de código, e eles podem ir para o banco de dados para obter informações mais detalhadas.

Eu recentemente construído um asp.net webservice com NLog, que eu uso para todos os meus aplicativos de desktop. O registro funciona bem quando estou a depuração no Visual Studio, mas assim que eu mudar para IIS o arquivo de log não é criado; Eu ainda não determinada por quê, mas o fato de que eu preciso procurar uma solução que me faz querer tentar outra coisa para as minhas necessidades asp.net!

Nós usamos EnterpriseLibrary.ExceptionHandling.Logging. Eu como um pouco melhor do que log4net porque não só nós controlamos o registo completamente, mas podemos controlar o lance / nothrow decisão no prazo de configuração também.

Nós usamos um registro de homegrown costume util nós escrevemos. Ela exige que você implementar o registro em seu próprio país em todos os lugares que você precisar. Mas, ele também permite que você capture muito mais do que apenas a exceção.

Por exemplo o nosso código ficaria assim:

Try
  Dim p as New Person()
  p.Name = "Joe"
  p.Age = 30
Catch ex as Exception
  Log.LogException(ex,"Err creating person and assigning name/age")
  Throw ex
End Try

Desta forma, a nossa logger vai escrever todas as informações que precisa para um banco de dados SQL. Temos alertas de email configuradas no nível de DB de olhar para certos erros ou erros que ocorrem com frequência. Ele nos ajuda a identificar exatamente onde os erros estão vindo.

Isto pode não ser exatamente o que você está procurando. Outra abordagem semelhante ao uso Global.asax é para nós uma técnica de injeção de código como AOP com PostSharp . Isso permite que você injetar código personalizado no início e no final de cada método ou em cada exceção. É uma abordagem interessante, mas eu acredito que ele pode ter uma sobrecarga de desempenho pesado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top