《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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构