2011-09-21 11 views
1

私のAzureアプリケーションでは、アプリケーションが何をしているかを追跡するためにTrace.WriteLine()呼び出しを振りかざしています。一部のトレースメッセージのみがログに記録される

私が困惑しているのは、これらのうちのいくつかがログに記録し、他の記録は記録しないということです。例えば、私のWorkerロールの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"); 
} 

最初のトレースが記録されます。 ifステートメントのTrace呼び出しのいずれもログに記録されません。その後に実行されるメソッドのTraceメソッドがログに記録されます。

アイデア?

+0

おそらく何かがあなたの背後に例外を投げたでしょうか? –

+0

私はそれも考えていますが、私はほとんどの作品の周りに投げることができるtry-catchラッパーを持っています。トレースのいくつかはログに記録されているようですが、ほんの数分後に記録されます。 – 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

関連する問題