C# 在Elmah for Azure函数中记录错误
以下是我在Webjobs中启用错误日志记录的方式:C# 在Elmah for Azure函数中记录错误,c#,azure,azure-functions,C#,Azure,Azure Functions,以下是我在Webjobs中启用错误日志记录的方式: public static class ElmahExtension { public static void LogToElmah(this Exception ex) { if (HttpContext.Current != null) { ErrorSignal.FromCurrentContext().Raise(ex
public static class ElmahExtension
{
public static void LogToElmah(this Exception ex)
{
if (HttpContext.Current != null)
{
ErrorSignal.FromCurrentContext().Raise(ex);
}
else
{
if (httpApplication == null) InitNoContext();
ErrorSignal.Get(httpApplication).Raise(ex);
}
}
private static HttpApplication httpApplication = null;
private static ErrorFilterConsole errorFilter = new ErrorFilterConsole();
public static ErrorMailModule ErrorEmail = new ErrorMailModule();
public static ErrorLogModule ErrorLog = new ErrorLogModule();
public static ErrorTweetModule ErrorTweet = new ErrorTweetModule();
private static void InitNoContext()
{
httpApplication = new HttpApplication();
errorFilter.Init(httpApplication);
(ErrorEmail as IHttpModule).Init(httpApplication);
errorFilter.HookFiltering(ErrorEmail);
(ErrorLog as IHttpModule).Init(httpApplication);
errorFilter.HookFiltering(ErrorLog);
(ErrorTweet as IHttpModule).Init(httpApplication);
errorFilter.HookFiltering(ErrorTweet);
}
private class ErrorFilterConsole : ErrorFilterModule
{
public void HookFiltering(IExceptionFiltering module)
{
module.Filtering += new ExceptionFilterEventHandler(base.OnErrorModuleFiltering);
}
}
}
如何设置Elmah登录Azure functions
应用程序项目,并显示发生错误的行号信息
注意:Azure函数从单独引用的程序集[服务项目]调用函数 ELMAH不是为Azure函数构建的。据我所知,在函数中以正常方式设置ELMAH日志是不可能的。您几乎可以从代码中配置ELMAH(在这里进行了实验:),但是您需要将代码添加到
web.config
,这是不可用的
你可以尝试的一件事是。它会在启动时自动注册ELMAH。我还没有在函数上尝试过,但可能值得一试
我还想快速提及Microsoft.Extensions.Logger。函数实际上支持注入ILogger,但目前它会记录到磁盘或应用程序细节。在未来,这可能会扩展到支持第三方目的地。您应该注意。ELMAH不是为Azure功能而构建的。据我所知,在函数中以正常方式设置ELMAH日志是不可能的。您几乎可以从代码中配置ELMAH(在这里进行了实验:),但是您需要将代码添加到
web.config
,这是不可用的
你可以尝试的一件事是。它会在启动时自动注册ELMAH。我还没有在函数上尝试过,但可能值得一试
我还想快速提及Microsoft.Extensions.Logger。函数实际上支持注入ILogger,但目前它会记录到磁盘或应用程序细节。在未来,这可能会扩展到支持第三方目的地。你应该注意一下