Se si desidera visualizzare l'output standard e l'errore del processo di lavoro in una distribuzione effettiva, è necessario eseguire alcune configurazioni aggiuntive. Questi dati devono essere memorizzati in una memoria persistente.
Il primo passaggio consiste nell'abilitare Diagnostica nella finestra di configurazione di WorkerRole
. Qui deve essere specificato un account di archiviazione.
Il passaggio successivo è aggiungere codice aggiuntivo al metodo OnStart()
del proprio WorkerRole
. Qui è possibile non solo configurare l'output standard e l'errore, ma anche ascoltare gli eventi di Windows e le informazioni diagnostiche fornite nel seguente esempio di codice.
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();
}
Dopo queste impostazioni, i dati diagnostici saranno visibili nella memoria di Azure Table configurata. Puoi facilmente scrivere strumenti per visualizzare i tuoi dati qui, ma ci sono anche alcuni strumenti commerciali che hanno funzionalità incorporate per questo. Ad esempio Cerebrata Diagnostics Manager.
Se per qualche motivo non si desidera utilizzare Archiviazione di Azure per l'archiviazione dei file di registro, è possibile implementare un listener di traccia personalizzato che può scrivere registri in qualsiasi altro punto. Here è una descrizione su come farlo. È sufficiente aprire una porta http e trasferirli sul proprio server.
Si sta utilizzando System.Diagnostics.Trace per scrivere il messaggio nel ruolo di lavoratore? – AvkashChauhan
No, sto eseguendo un ruolo di lavoratore con un 'ProgramEntryPoint' non- .NET. Tuttavia, posso vedere che non è chiaro dalla mia domanda --- aprirò una nuova domanda per affrontarlo. –
Vedere [questa domanda] (http://stackoverflow.com/questions/10827388/) se si utilizza 'ProgramEntryPoint' per eseguire un'app non.NET in un ruolo di Azure Worker. –