2011-05-13 17 views
11

Eminim basit bir şeyleri kaçırdım, ancak Azure üzerinde çalışmak için basit Trace.WriteLine alamıyorum.Windows Azure Trace Günlüğü çalışmıyor

Adımlar ben almış:

Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString tanımı dosyasını hizmet etmek bizim Azure depolama hesabına

İthalat Modülü Teşhis için kurulmuştur.

Web config

:

<system.diagnostics> 
    <switches> 
     <add name="logLevel" value="4" /> 
    </switches> 
    <trace autoflush="false" indentsize="4"> 
     <listeners> 
     <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      name="AzureDiagnostics"> 
     </add> 
     </listeners> 
    </trace> 

    </system.diagnostics> 

WebRole.cs

public class WebRole : RoleEntryPoint 
{ 
    public override bool OnStart() 
    { 


     String wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"; 

     CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString)); 

     RoleInstanceDiagnosticManager roleInstanceDiagnosticManager = 
       cloudStorageAccount.CreateRoleInstanceDiagnosticManager(
       RoleEnvironment.DeploymentId, 
       RoleEnvironment.CurrentRoleInstance.Role.Name, 
       RoleEnvironment.CurrentRoleInstance.Id); 

     DiagnosticMonitorConfiguration diagnosticMonitorConfiguration = 
      roleInstanceDiagnosticManager.GetCurrentConfiguration(); 

     diagnosticMonitorConfiguration.Directories.ScheduledTransferPeriod = 
       TimeSpan.FromMinutes(5d); 

     diagnosticMonitorConfiguration.Logs.ScheduledTransferPeriod = 
       TimeSpan.FromMinutes(1d); 

     diagnosticMonitorConfiguration.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose; 

     roleInstanceDiagnosticManager.SetCurrentConfiguration 
       (diagnosticMonitorConfiguration); 

     Trace.WriteLine("This is the message"); 
     Debug.Write("This is the debug message"); 
     System.Diagnostics.Trace.TraceError("message2"); 
     System.Diagnostics.Trace.TraceWarning("message warning"); 
     System.Diagnostics.Trace.TraceInformation("message warning"); 
     Trace.Flush(); 
     return base.OnStart(); 

    } 
} 

Çözüm sürümü olarak derlenmektedir.

Depolama hesabındaki nesneleri görüntülediğimde WADDirectoriesTable adlı bir tablo ve vsdeploy, wad-control-container ve was-iis-logfiles adlı üç blob oluşturulduğunu görebiliyorum.

İz bilgilerime benzeyen hiçbir şey yok.

Çok teşekkürler

cevap

4

Aynı sorun vardı. here numaralı çözümü kullanıyordum.

Bunun için
public override bool OnStart() 
{ 
    Trace.WriteLine("Entering OnStart..."); 

    var traceResource = RoleEnvironment.GetLocalResource("TraceFiles"); 
    var config = DiagnosticMonitor.GetDefaultInitialConfiguration(); 

    // *** this part specifies where transfers should be stored *** 
    config.Directories.DataSources.Add(
     new DirectoryConfiguration 
     { 
      Path = traceResource.RootPath, 
      Container = "traces", 
      DirectoryQuotaInMB = 100 
     }); 
    config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(10); 

    DiagnosticMonitor.Start("DiagnosticsConnectionString", config); 

    return base.OnStart(); 
} 

bu dosyaları depolamak için bir YerelDepolama düğümü oluşturmak zorunda, çalışmak için: Ne eksik parçası (bir LocalResource yolu kullanarak, bu durumda) günlükleri scheduled to be transferred olan yeri olduğuna inanıyoruz içinde senin ServiceDefinition.csdef: onlar depolama hesabında kullanılabilir olmadığından, onlara alabilirsiniz bazı yerde bu dosyaları aktarmak için bir yol olması gerekir, ancak bir yerel kaynak klasörü

<LocalStorage name="TraceFiles" sizeInMB="100" cleanOnRoleRecycle="true" /> 

ve VM'nin kendisi. Yerel kaynak dosyalarını indirmeme izin veren bir web sayfası ile bunu başardım.

+0

değil benim tam sorun veya çözüm ama çok ilginç çalışma Teşhis almak için birlikte aldım adımları özetleyen bir blog yazısı koymak ve ben de başka bir şey için bunu kullanabilir. Gönderi için çok teşekkürler! – Max

İlgili konular