5

当我在本地运行我的工作角色时,我可以打开 Windows Azure Compute Emulator 应用程序并查看我的工作进程的标准输出和错误。

当我将桌面远程访问到我的 Azure 实例时,我不知道从哪里获得相同的信息。我在哪里可以找到标准输出和错误?

4

2 回答 2

3

如果您想在实际部署中查看工作进程的标准输出和错误,则需要进行一些额外的配置。此数据必须存储在持久存储中。

第一步是在您的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 端口并将它们传输到您自己的服务器。

于 2012-05-30T22:25:32.010 回答
0

跟踪消息不会存储在 Window Azure 中的任何位置,相反,如果您正确配置 Azure 诊断,这些消息将从那里发送到 Windows Azure 表存储(WADLogsTable 表),您可以获得它们。

如果您想知道如何启用 Azure 跟踪诊断,请访问以下链接并查找Windows Azure 诊断演示代码示例:

http://msdn.microsoft.com/en-us/library/windowsazure/hh411529.aspx

您可以在此处了解有关 Azure 诊断的详细信息。

于 2012-05-30T22:24:18.540 回答