WEB开发网
开发学院服务器云计算 Windows Azure Platform (二十)使用Windows Azure... 阅读

Windows Azure Platform (二十)使用Windows Azure诊断收集日志记录数据

 2012-03-22 12:00:35 来源:WEB开发网   
核心提示:如果我们在本地服务器上调试应用程序,我们可以使用Visual Studio设置断点或者输出日志文件的方式,Windows Azure Platform (二十)使用Windows Azure诊断收集日志记录数据,但是我们把应用程序部署到云端服务器上之后,就不能使用传统的方式来调试应用程序了,实际应用中我们可以通过try

如果我们在本地服务器上调试应用程序,我们可以使用Visual Studio设置断点或者输出日志文件的方式。

但是我们把应用程序部署到云端服务器上之后,就不能使用传统的方式来调试应用程序了。那我们部署到云端的应用程序运行时如何监视并且发现和修改Bug呢?

Windows Azure提供了诊断功能,该功能能够记录诊断日志,保存到Windows Azure Storage里。

1.我们先创建一个Cloud Project并且添加一个Web Role

2.在Default.aspx里添加一个如下内容:

<asp:TextBox ID="txbInput" runat="server"></asp:TextBox>
       
<asp:Button ID="btnOK" runat="server" Text="确认" onclick="btnOK_Click" />

3.在Default.aspx.cs添加如下代码:

4.在WebRole.cs中添加如下代码:

public override bool OnStart()
        {
            // 获取用于Windows Azure诊断的默认初始配置

            DiagnosticMonitorConfiguration diagConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
            diagConfig.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;

            // 制定预定传输间隔
            diagConfig.Logs.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(1);

            // 制定预定传输间隔
            DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", diagConfig);

            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            return base.OnStart();

        }

 

 

 protected void Page_Load(object sender, EventArgs e)
        {
            System.Diagnostics.Trace.WriteLine(System.DateTime.Now.ToLongTimeString() + "Page_Load is called");
        }

        protected void btnOK_Click(object sender, EventArgs e)
        {
            string inputValue = txbInput.Text.Trim();

            if (!string.IsNullOrEmpty(inputValue))
            {
                System.Diagnostics.Trace.WriteLine(System.DateTime.Now.ToLongTimeString() + "Your Input is " + inputValue);
            }
        }

 

5.分析代码:

我们需要关心的代码主要有:

diagConfig.Logs.ScheduledTransferLogLevelFilter =LogLevel.Verbose;

该代码设置了日志过滤级别。有些情况下我们只关心严重的错误,这时候我们可以设置过滤级别为LogLevel.Error或者LogLevel.Critical。这样只有符合条件的日志才会被传输到cloud storage上。

diagConfig.Logs.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(1);

这段代码设置了传输间隔。这里我们设置为每隔一分钟传输一次日志

6.修改配置文件

Cloud Project-->Roles-->右键-->属性

修改Enable Diagnostics,输入Azure Storage Account Name和Account Key

把Azure诊断内容保存到Windows Azure Storage里。

7.最后把Web站点发布到Windows Azure托管服务上(过程略),并且登陆该站点。

8.使用Visual Studio中的Server Explorer,右键-->New Account, Add Account Name和Account Key,我们可以在threestone帐号下看到WADLogsTable看到一条记录:

我们可以看到之前在代码里添加的跟踪信息已经被记录到了Table Storage中了。实际应用中我们可以通过try-catch来捕获异常,并且添加错误日志。这些日志能够被传送到cloud storage中以便分析问题。

Tags:Windows Azure Platform

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接