【发布时间】:2012-08-28 09:00:52
【问题描述】:
我有一个 Azure 的免费帐户(90 天试用),我发现我的辅助角色出错了。我没有启用任何监控功能,因为我认为它们需要花钱。
我有什么方法可以记录错误并将它们存储在可以检索它们的地方,而无需将我的帐户升级为付费帐户?
【问题讨论】:
标签: c# exception logging azure azure-worker-roles
我有一个 Azure 的免费帐户(90 天试用),我发现我的辅助角色出错了。我没有启用任何监控功能,因为我认为它们需要花钱。
我有什么方法可以记录错误并将它们存储在可以检索它们的地方,而无需将我的帐户升级为付费帐户?
【问题讨论】:
标签: c# exception logging azure azure-worker-roles
您可以在辅助角色 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);
}
【讨论】:
查看 (Windows Azure Diagnostics),它允许您为您的工作角色收集诊断数据(跟踪日志、事件日志、性能计数器等)。根据配置,此诊断数据可以持久保存到 Windows Azure 表存储中。您可以使用任何存储资源管理器查看诊断数据。
【讨论】:
瘦而便宜的方法是添加到角色错误处理程序,将异常内容与堆栈一起发送到 StorageAccount 表。您可以使用云存储浏览器查看表内容以查看异常的详细信息。随着时间的推移,这可能会变得成熟,有一个很好的“内部”应用程序,可以将表格内容下载到 SS 中,并创建一个可以浏览错误的智能客户端。
我以一种可以设置详细程度并通过 UTC 处理时间戳的方式实现了这个系统。日志记录是在一个单独的工作角色中完成的,因此“生产”角色发布到一个队列,这对于失败的角色来说处理速度要快得多。
【讨论】:
我发现自己实施 Azure 诊断非常耗时,目前最好的方法是在我的机器上启动 Azure 模拟器,然后查看它显示的错误。
您所做的只是将您的 Azure 项目设置为启动并运行它。 或者右键单击 Azure 项目并选择:Debug -> Start New Instance
【讨论】: