Si desea ver su salida estándar y el error de su proceso de trabajo en una implementación real, entonces tendrá que hacer alguna configuración adicional. Esta información debe almacenarse en un almacenamiento persistente.
El primer paso es habilitar Diagnósticos en la ventana de configuración de su WorkerRole
. Aquí se debe especificar una cuenta de almacenamiento.
El siguiente paso es agregar código adicional al método OnStart()
de su WorkerRole
. Aquí no solo puede configurar la salida estándar y el error, sino que también puede escuchar eventos de Windows e información de diagnóstico como se proporciona en el siguiente ejemplo de código.
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();
}
Después de estos ajustes, sus datos de diagnóstico serán visibles en el almacenamiento configurado de Azure Table. Puede escribir fácilmente herramientas para visualizar sus datos aquí, pero también hay algunas herramientas comerciales que tienen funcionalidad incorporada para esto. Por ejemplo, Cerebrata Diagnostics Manager.
Si por algún motivo no desea utilizar Azure Storage para almacenar archivos de registro, puede implementar un escucha de rastreo personalizado que puede escribir registros en cualquier otro lugar. Here es una descripción sobre cómo hacerlo. Simplemente puede abrir un puerto http y transferirlos a su propio servidor.
¿Está utilizando System.Diagnostics.Trace para escribir un mensaje en su rol de trabajador? – AvkashChauhan
No, estoy ejecutando una función de trabajador con un 'ProgramEntryPoint' no de .NET. Sin embargo, puedo ver que eso no está claro en mi pregunta --- Abriré una nueva pregunta para abordar eso. –
Consulte [esta pregunta] (http://stackoverflow.com/questions/10827388/) si está utilizando 'ProgramEntryPoint' para ejecutar una aplicación que no es de .NET en una función de trabajador de Azure. –