ELMAH SQL Erro de banco de dados Handler não disponível- o que acontece com o registo?

StackOverflow https://stackoverflow.com/questions/758092

  •  09-09-2019
  •  | 
  •  

Pergunta

Estou testando ELMAH e deliberadamente desligado a conexão banco de dados para o registo de ELMAH no meu aplicativo para ver o que vai acontecer na produção se a DB não está disponível.

Parece que ELMAH não pode prender seu próprio errors- o arquivo AXD não está disponível quando o log de SQL databse falhar.

O que é o comportamento pretendido do ELMAH se o banco de dados não está disponível?

Como posso diagnosticar os meus erros, se isso ocorrer?

Foi útil?

Solução

Não tenho certeza sobre ELMAH mas o comportamento esperado de tais estruturas de registo é não jogar quaisquer excepções, se algo der errado com eles. Ou seja, Se base de dados do ELMAH é baixo Eu diria que ele só não vai registrar os erros de banco de dados.

Como sugerido acima, você pode / deve usar alternativa pias -. E-mail ou arquivo simples

Outras dicas

Parece que ELMAH não pode prender seu próprio erros

ELMAH faz armadilha seus próprios erros, até certo ponto. Se o ErrorLogModule encontra uma exceção ao tentar registrar o erro, em seguida, a exceção resultante da exploração madeireira é enviado para o recurso de rastreio padrão .NET Framework. Ver linha 123 a partir de 1,0 . fontes Ver também o seguinte walk-through a partir da documentação ASP.NET para obter o padrão .NET Framework rastreamento trabalhando com ASP.NET rastreamento:

Passo a passo: Integração ASP.NET Tracing com System.Diagnostics Tracing

O arquivo AXD não está disponível quando o log databse SQL falha.

Isso está correto. conectividade de banco de dados SQL Server deve ser funcional para visualizar os erros armazenados em um banco de dados SQL Server ao usar SqlErrorLog.

O que é o comportamento pretendido do ELMAH se o banco de dados não está disponível?

Se, por exemplo, o banco de dados SQL Server é para baixo, um SqlException irá ocorrer durante o registro. ELMAH, então, enviar o conteúdo SqlException objeto para o recurso de rastreio padrão .NET Framework.

Como posso diagnosticar os meus erros se esta ocorre?

A melhor opção aqui é também habilitar o registro e e-mails de erros. Se o banco de dados é baixo, as chances são boas de que o gateway de correio é para cima e você ainda vai ser notificado de erros. Os erros serão, de fato, obter logged em algumas caixas de correio (es). Isto também tem a vantagem adicional de que, se o gateway de correio é sempre para baixo, então as chances são de que o banco de dados será instalado e erros vai ficar registrado lá. Se ambos estão para baixo, no entanto, então você terá que rever seriamente a sua infra-estrutura de produção e, eventualmente, tomar medidas para monitorar a saúde do seu sistema através de medidas adicionais.

Você sempre pode usar a opção de arquivo xml para registrar seus erros.

Eu acho que você está misturando-se contextos um pouco.

O comportamento de ELMAH se o banco de dados não está disponível é a de não registrar erros no banco de dados. Se uma exceção é lançada no servidor ou se você levantar uma exceção por meio de um ErrorSignal, ELMAH vai deixar passar essa exceção por meio de qualquer uma tela amarela ou uma página de erros personalizados (sua configuração.)

Desde Errors.axd página só é acessível àqueles que deve ser vê-lo (idealmente), que é bom para apresentar esse erro para o usuário.

A linha inferior é que, se o banco de dados de erros é para baixo você não pode diagnosticar erros. Para nós, se fosse esse o caso, teríamos problemas maiores desde que o banco de dados de erro fica com o banco de dados de produção.


Também gostaria de defender contra o uso de log XML para a sua fonte de registro primário. servidor SQL está indo dar-lhe o melhor desempenho sem ter que gerenciar os arquivos. Com o registo XML que não é o caso.

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