2011-05-13 19 views
11

Estoy seguro de haber omitido algo simple pero no puedo hacer que Trace.WriteLine funcione en Azure.Windows Azure Trace Log no funciona

medidas que he tomado:

Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString se ha establecido a nuestra cuenta de almacenamiento de Azure

Módulo de Diagnóstico de importación para dar servicio a archivo de definición.

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(); 

    } 
} 

solución se compila como liberación.

Cuando veo los objetos en la cuenta de almacenamiento, puedo ver una tabla llamada WADDirectoriesTable y tres blobs creados llamados vsdeploy, wad-control-container y was-iis-logfiles.

Nada que se parece a mi información de rastreo.

Muchas gracias

Respuesta

4

Tuve este mismo problema. Estaba usando la solución here. Creo que la pieza se echa en falta es el lugar donde los registros son scheduled to be transferred (en este caso, mediante una ruta LocalResource):

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(); 
} 

Para que esto funcione, usted tiene que crear un nodo LocalStorage para almacenar estos archivos en su ServiceDefinition.csdef:

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

y es necesario tener una forma de transferir estos archivos a un lugar donde se puede llegar a ellos, debido a que no están disponibles en la cuenta de almacenamiento, sino en una carpeta de recursos locales en el VM en sí. Lo logro con una página web que me permite descargar archivos de recursos locales.

+0

no es mi problema exacto o solución, pero muy interesante y bien puede utilizar esto para otra cosa. ¡Muchas gracias por el post! – Max