zoukankan      html  css  js  c++  java
  • Windows Azure Cloud Service (14) 使用Windows Azure诊断收集日志记录数据

      《Windows Azure Platform 系列文章目录

      如果我们在本地服务器上调试应用程序,我们可以使用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中以便分析问题。

    大家有兴趣可以参考微软MSDN:使用Windows Azure诊断收集日志记录数据

    Using IntelliTrace to debug Windows Azure Cloud Services


     

  • 相关阅读:
    幂等性知识学习梳理
    使用Less,FontAwesome 重写EasyUI TreeGrid样式
    根据表达式树动态生成Lambda表达式
    elasticsearch-query-builder, 一款可以基于配置化以及参数绑定的ES语句构造神器
    hadoop2 5个环境配置文件
    hadoop3.0.0 分布式集群安装过程
    linux 常用命令
    securecrt 常用快捷键
    java 面试题
    Spark Streaming 读取 Kafka 数据的两种方式
  • 原文地址:https://www.cnblogs.com/threestone/p/2332078.html
Copyright © 2011-2022 走看看