Pergunta

Eu gero um tópico no Application_start e gostaria de registrar exceções. Não há Context/HttpContext/HttpContext.Current, então como posso fazer o log?

No momento, ele não capta nenhuma exceção em meus tópicos e se eu escrever ErrorSignal.FromCurrentContext().Raise(ex); Recebo um erro sobre o contexto não pode ser nulo.

Talvez eu possa criar um HttpContext dummy, mas de alguma forma não acho que isso funcione bem.

-editar- eu tentei ErrorSignal.Get(new HttpApplication()).Raise(ex); E parece não entender essa exceção.

Foi útil?

Solução

Certifique -se de definir o nome do seu aplicativo em web.config

<errorLog type="Elmah.SqlErrorLog, Elmah" 
          connectionStringName="nibWeb" 
          applicationName="Nib.Services" />

e depois

ErrorLog.GetDefault(null).Log(new Error(error));

vai funcionar

Outras dicas

Eu não estava usando <errorLog> Como na resposta de Brendan Carey, porque eu estava apenas na memória. No entanto, seu comando funcionou muito bem no meu caso sem nomear o aplicativo:

Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("The application has done something.")));

Eu tive que recompilar o Elmah com o .NET 4.0, devido a um erro sobre a necessidade de sistemas.web.abstrações 3.5.0.0. Meu garfo compilado para a.

http://code.google.com/r/scottstafford-elmah/

Para minha aplicação, eu salvei this.Context.ApplicationInstance dentro Application_Start para que eu possa ligar Elmah.ErrorSignal.Get com a instância salva. Com o ErrorSignal, Eu poderia então Raise. Isso passa por todos os filtros de email.

Abaixo está o código. Eu uso fluentscheduler para

public class Global : HttpApplication {
    void Application_Start(object sender, EventArgs e) {

        var application = Context.ApplicationInstance;
        FluentScheduler.TaskManager.UnobservedTaskException +=
            (FluentScheduler.Model.TaskExceptionInformation i, UnhandledExceptionEventArgs a) =>
                Elmah.ErrorSignal.Get(application).Raise(i.Task.Exception);

    }
}

Eu adicionei uma solução para: Usando Elmah em um aplicativo de console Isso adiciona capacidade de enviar email, tweets e filtro, além do log.

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