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

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

何か案は?

4

1 に答える 1

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
  }
于 2011-10-17T20:43:49.943 に答える