【问题标题】:How do I log and retrieve Azure Worker role exceptions?如何记录和检索 Azure 辅助角色异常?
【发布时间】:2012-08-28 09:00:52
【问题描述】:

我有一个 Azure 的免费帐户(90 天试用),我发现我的辅助角色出错了。我没有启用任何监控功能,因为我认为它们需要花钱。

我有什么方法可以记录错误并将它们存储在可以检索它们的地方,而无需将我的帐户升级为付费帐户?

【问题讨论】:

    标签: c# exception logging azure azure-worker-roles


    【解决方案1】:

    您可以在辅助角色 OnStart() 方法中为未处理的异常附加事件。

        public override bool OnStart()
        {
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    
            bool result = base.OnStart();
    
            Trace.TraceInformation("ReceiverRole has been started");
    
            return result;
        }
    
    
        private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            Trace.TraceError("Unhandled exception in worker role: {0}", e.ExceptionObject);
        }
    

    【讨论】:

      【解决方案2】:

      查看 (Windows Azure Diagnostics),它允许您为您的工作角色收集诊断数据(跟踪日志、事件日志、性能计数器等)。根据配置,此诊断数据可以持久保存到 Windows Azure 表存储中。您可以使用任何存储资源管理器查看诊断数据。

      【讨论】:

        【解决方案3】:

        瘦而便宜的方法是添加到角色错误处理程序,将异常内容与堆栈一起发送到 StorageAccount 表。您可以使用云存储浏览器查看表内容以查看异常的详细信息。随着时间的推移,这可能会变得成熟,有一个很好的“内部”应用程序,可以将表格内容下载到 SS 中,并创建一个可以浏览错误的智能客户端。

        我以一种可以设置详细程度并通过 UTC 处理时间戳的方式实现了这个系统。日志记录是在一个单独的工作角色中完成的,因此“生产”角色发布到一个队列,这对于失败的角色来说处理速度要快得多。

        【讨论】:

          【解决方案4】:

          我发现自己实施 Azure 诊断非常耗时,目前最好的方法是在我的机器上启动 Azure 模拟器,然后查看它显示的错误。

          您所做的只是将您的 Azure 项目设置为启动并运行它。 或者右键单击 Azure 项目并选择:Debug -> Start New Instance

          【讨论】:

          猜你喜欢
          • 2015-07-10
          • 2014-11-09
          • 1970-01-01
          • 1970-01-01
          • 2012-07-06
          • 2017-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多