Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Elmah for Azure函数中记录错误_C#_Azure_Azure Functions - Fatal编程技术网

C# 在Elmah for Azure函数中记录错误

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

以下是我在Webjobs中启用错误日志记录的方式:

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,但目前它会记录到磁盘或应用程序细节。在未来,这可能会扩展到支持第三方目的地。你应该注意一下