Registrar dados da exceção

Nos capítulos anteriores registramos conteúdos customizados. Na verdade, o Log4net também consegue registrar exceções com toda a pilha de chamadas, facilitando muito a solução de problemas para desenvolvedores.

try
{
    int b = 0;
    int a = 100 / b;
}
catch (Exception ex)
{
    log.Error(ex.Message, ex);
}Code language: PHP (php)
  1. Disparar exceção: 100 / b. A variável b=0 lança a exceção DivideByZeroException de divisão por zero.
  2. Capturar exceção: catch (Exception ex) captura todas as exceções herdadas de Exception.
  3. Forma essencial de gravar log: log.Error(ex.Message, ex);
    • Primeiro parâmetro: mensagem de log personalizada (aqui usamos a descrição curta da exceção ex.Message)
    • O segundo parâmetro obrigatoriamente recebe o objeto de exceção ex
    • Quando o log4net identifica que o segundo parâmetro é uma instância Exception, eleimprime automaticamente a pilha completa (StackTrace) com localização do erro e cadeia de chamadas.
Má prática (não imprime pilha de chamadas)
//  Apenas string é passada, pilha de chamadas é perdida!
log.Error(ex.ToString());
log.Error(ex.Message);Code language: JavaScript (javascript)

Essa abordagem só retorna o texto da exceção. Alguns formatos de log não expandem a pilha de chamadas automaticamente e dificultam a depuração.

Padrão recomendado
//  Recomendado: adicionar contexto de negócio e passar objeto de exceção
log.Error("Ocorreu falha durante o cálculo da divisão", ex);Code language: JavaScript (javascript)

Registrar dados da exceção

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *