当我在本地运行我的工作角色时,我可以打开 Windows Azure Compute Emulator 应用程序并查看我的工作进程的标准输出和错误。
当我将桌面远程访问到我的 Azure 实例时,我不知道从哪里获得相同的信息。我在哪里可以找到标准输出和错误?
当我在本地运行我的工作角色时,我可以打开 Windows Azure Compute Emulator 应用程序并查看我的工作进程的标准输出和错误。
当我将桌面远程访问到我的 Azure 实例时,我不知道从哪里获得相同的信息。我在哪里可以找到标准输出和错误?
如果您想在实际部署中查看工作进程的标准输出和错误,则需要进行一些额外的配置。此数据必须存储在持久存储中。
第一步是在您的WorkerRole
. 此处必须指定存储帐户。
下一步是向OnStart()
您的WorkerRole
. 在这里,您不仅可以配置标准输出和错误,还可以按照以下代码示例中提供的方式侦听 Windows 事件和诊断信息。
public override bool OnStart()
{
DiagnosticMonitorConfiguration diagConfig =
DiagnosticMonitor.GetDefaultInitialConfiguration();
// Windows event logs
diagConfig.WindowsEventLog.DataSources.Add("System!*");
diagConfig.WindowsEventLog.DataSources.Add("Application!*");
diagConfig.WindowsEventLog.ScheduledTransferLogLevelFilter = LogLevel.Error;
diagConfig.WindowsEventLog.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);
// Azure application logs
diagConfig.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
diagConfig.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(5);
// Performance counters
diagConfig.PerformanceCounters.DataSources.Add(
new PerformanceCounterConfiguration()
{
SampleRate = TimeSpan.FromSeconds(5),
CounterSpecifier = @"\Processor(*)\% Processor Time"
});
diagConfig.PerformanceCounters.ScheduledTransferPeriod =
TimeSpan.FromMinutes(5);
DiagnosticMonitor.Start(
"Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", diagConfig);
return base.OnStart();
}
完成这些设置后,您的诊断数据将在配置的 Azure 表存储中可见。您可以在这里轻松编写工具来可视化您的数据,但也有一些商业工具为此内置了功能。例如 Cerebrata 诊断管理器。
如果由于某种原因您不想使用 Azure 存储来存储日志文件,您可以实现一个自定义跟踪侦听器,该侦听器可能会在其他任何地方写入日志。这是有关如何执行此操作的说明。您可以简单地打开一个 http 端口并将它们传输到您自己的服务器。
跟踪消息不会存储在 Window Azure 中的任何位置,相反,如果您正确配置 Azure 诊断,这些消息将从那里发送到 Windows Azure 表存储(WADLogsTable 表),您可以获得它们。
如果您想知道如何启用 Azure 跟踪诊断,请访问以下链接并查找Windows Azure 诊断演示代码示例:
http://msdn.microsoft.com/en-us/library/windowsazure/hh411529.aspx
您可以在此处了解有关 Azure 诊断的详细信息。