2011-09-21 2 views
1

в моем приложении Azure У меня есть Trace.WriteLine() вызывает посылку, чтобы отслеживать, что делает приложение.Только некоторые сообщения о трассировке регистрируются

Что меня толкает, что некоторые из них попадают в журнал, а другие нет. Например, этот фрагмент кода из моего метода работника роль OnStart():

Trace.WriteLine("WorkerRole: creating storage tables", "Information"); 
CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); 
CloudTableClient tableClient = account.CreateCloudTableClient(); 
if (tableClient.CreateTableIfNotExist("Devices")) { 
    Trace.WriteLine("WorkerRole.OnStart: Devices table created", "Information"); 
}else{ 
    Trace.WriteLine("WorkerRole.OnStart: Devices table not created. Already exists?", "Information"); 
} 

Первый след получает журнал. Ни один из вызовов Trace в выражении if не записывается в журнал. Затем регистрируется метод Trace в последующем методе выполнения.

Любые идеи?

+0

Возможно, что-то заставило вас за спиной сделать исключение? –

+0

Я тоже так думаю, хотя у меня есть обертки с пробкой вокруг большинства кусков, которые можно бросить. Также кажется, что некоторые из этих трасс регистрируются, но через несколько минут. – onnoweb

+0

Я разместил то, что может быть или не быть дубликат этой проблемы: http://stackoverflow.com/questions/7522762/why-doesnt-windows-azure-diagnostics-reliably-log – Jaxidian

ответ

0

В вашем методе OnStart для вашей роли вы настраиваете конфигурацию DiagnosticMonitorConfiguration? По умолчанию журналы трассировки не передаются на хранение, если вы не сообщите об этом:

public override bool OnStart() 
    { 
     #region SetupDiagnostics Set up diagnostics 

     DiagnosticMonitorConfiguration dmc = DiagnosticMonitor.GetDefaultIniialConfiguration(); 
     TimeSpan tsOneMinute = TimeSpan.FromMinutes(1); 

     dmc.Logs.ScheduledTransferPeriod = tsOneMinute;  // Transfer logs every minute 
     dmc.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose; // Tansfer verbose, critical, etc. logs 

     // Start up the diagnostic manager with the given configuration 
     DiagnosticMonitor.Start("DiagnosticsConnectionString", dmc); 

     #endregion 
    } 
+0

Да, я делаю это. Кажется, что моя рабочая роль тихо рушилась где-то там, где у меня не было блока try-catch вокруг кода. – onnoweb

Смежные вопросы