如何将消息记录到Windows Azure存储?

时间:2013-03-28 00:15:30

标签: asp.net .net azure

我正在努力完成一项非常简单的任务,数小时没有成功。 我只想将消息记录到Windows Azure存储中,以便稍后进行分析

我尝试过的目标:

我已启用诊断功能:

enter image description here

之后我将这一行放在Application_Start

Trace.TraceError("My Error");

我希望它能够登录到Windows Azure存储。但事实并非如此。然后我读了here我应该首先配置DiagnosticMonitor类。但是我认真地认为这个类已经被弃用..因为它在汇编Microsoft.WindowsAzure.StorageClient中是版本1.7(其他版本是1.8或2.0),当我添加对它的引用时,我的所有CloudStorageAccount引用变为模糊不清,因为这个程序集包含了我已经拥有的其他程序集Microsoft.WindowsAzure.Storage(更新)的类。我真的认为我不应该添加对StorageClient的引用。

简单地说..我正在阅读很多文件而无处可去。

你可以请...告诉我究竟做了什么?我非常感激。感谢。

PS:我正在使用VS 2012与Windows Azure Tools 2012年10月

1 个答案:

答案 0 :(得分:1)

您已完成的操作(在屏幕截图中)启用了诊断功能。接下来您需要做的是在代码中配置诊断程序。为此,请按照下列步骤操作:

  1. 在web.config中添加以下代码行:

      <system.diagnostics>
    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
          <filter type=""/>
        </add>
      </listeners>
    </trace></system.diagnostics>
    
  2. 在角色的OnStart()方法中配置诊断。该代码仅用于跟踪日志:

        DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();
    
        // Set an overall quota of 8GB.
        config.OverallQuotaInMB = 4096;
        // Set the sub-quotas and make sure it is less than the OverallQuotaInMB set above
        config.Logs.BufferQuotaInMB = 512;
        TimeSpan myTimeSpan = TimeSpan.FromMinutes(2);
        config.Logs.ScheduledTransferPeriod = myTimeSpan;//Transfer data to storage every 2 minutes
    
        // Filter what will be sent to persistent storage.
        config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Undefined;//Transfer everything
        // Apply the updated configuration to the diagnostic monitor.
        // The first parameter is for the connection string configuration setting.
        DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config); 
    
  3. 这应该用于诊断。

    关于旧版和新版存储客户端库的混淆:目前,Windows Azure诊断模块依赖于旧版存储客户端库(Microsoft.WindowsAzure.StorageClient.dll)。因此,您需要确保在项目中引用此库。您可以从C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-10\ref文件夹手动添加引用。如果您同时使用旧的存储客户端库和新的存储客户端库(Microsoft.WindowsAzure.Storage.dll),则会出现混淆。因此,您需要确保CloudStorageAccount对象的范围正确。

    设置完所有内容后,您应该能够看到存储帐户中创建的名称WADLogsTable的表格以及该表格中的数据。