Azure诊断和Class onStop(按比例缩小) - 如何防止日志丢失?

时间:2014-02-06 00:42:30

标签: azure azure-diagnostics

我正在我的Web角色的onStart中初始化我的Azure诊断程序,并计划每5分钟传输一次日志。但是当自动缩放关闭一个我的角色时,我们将丢失自上次传输后的日志。我可以在onStop上做些什么来防止这种情况发生?有没有办法强制日志传输并阻止onStop完成直到完成?谢谢!

2 个答案:

答案 0 :(得分:0)

只需在onStop方法中进行日志传输即可。或者,如果在线程中完成,则使用onStop方法中的标志和循环进行休眠,直到设置标志。

SaveLogAsync();
while(!saved)
{
    Thread.Sleep(100);
}

在强制关闭之前,onStop方法仍然有最长的运行时间。我想这是5分钟。

答案 1 :(得分:0)

要在角色关闭时传输诊断数据,您需要执行名为On-Demand Transfer的操作。这将开始将存储在缓冲区中的数据传输到诊断存储帐户。您可能会发现此链接有助于执行按需转移:http://msdn.microsoft.com/en-us/library/windowsazure/gg433075.aspx

大卫是对的。您将有大约5分钟的时间来执行此操作。有关详细信息,请参阅此链接:http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.roleentrypoint.onstop.aspx。要正常处理OnStop事件,您可能会发现此博客文章很有用:http://blogs.msdn.com/b/windowsazure/archive/2013/01/14/the-right-way-to-handle-azure-onstop-events.aspx