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 调用都没有记录。然后,随后执行的方法中的 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 回答