【问题标题】:Only some trace messages getting logged只有一些跟踪消息被记录
【发布时间】:2011-10-18 04:43:49
【问题描述】:

在我的 Azure 应用程序中,我使用 Trace.WriteLine() 调用来跟踪应用程序正在执行的操作。

让我感到困惑的是,其中一些进入了日志,而另一些则没有。例如,我的工人角色 OnStart() 方法中的这段 sn-p 代码:

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 方法会被记录。

有什么想法吗?

【问题讨论】:

  • 也许是什么东西在你背后引发了异常?
  • 我也这么认为,尽管我在大多数可以抛出的碎片周围都有 try-catch 包装器。似乎有些痕迹确实被记录了,但只是在几分钟后。
  • 我在这里发布了可能与此问题重复或不重复的内容:stackoverflow.com/questions/7522762/…
  • 在我的场景中,我可以向您保证,这不是引发问题的异常,因为我可以在调试代码时重现它在本地运行。 Trace 将很好地输出到“输出”窗口,但它是否会出现在我的 Azure 表中是一个硬币翻转。

标签: azure azure-diagnostics


【解决方案1】:

在您的角色的 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
  }

【讨论】:

  • 是的,我就是这么做的。似乎我的工人角色在我没有围绕代码的 try-catch 块的地方悄悄地崩溃了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多