Azure 只记录了一些跟踪消息
在我的Azure应用程序中,我有Trace.WriteLine调用来跟踪应用程序正在做什么 让我感到难堪的是,其中一些成功了,而另一些却没有。例如,我的工作者角色OnStart方法中的以下代码片段:Azure 只记录了一些跟踪消息,azure,azure-diagnostics,Azure,Azure Diagnostics,在我的Azure应用程序中,我有Trace.WriteLine调用来跟踪应用程序正在做什么 让我感到难堪的是,其中一些成功了,而另一些却没有。例如,我的工作者角色OnStart方法中的以下代码片段: Trace.WriteLine("WorkerRole: creating storage tables", "Information"); CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("Dat
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语句中的跟踪调用都没有被记录。随后执行的方法中的跟踪方法会被记录下来
有什么想法吗?在您的角色启动方法中,您是否正在调整DiagnosticMonitor配置?默认情况下,跟踪日志不会传输到存储,除非您告诉它:
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
}
也许有什么东西在你背后抛出了一个异常?我也在想,尽管我已经尝试过在大多数可能抛出的碎片周围使用包装纸。似乎有些跟踪确实被记录了下来,但只是几分钟后。我在这里发布了可能与此问题重复或不重复的内容:在我的场景中,我可以向您保证,抛出的异常不会导致问题,因为我可以在调试代码时在本地复制它。跟踪将很好地输出到输出窗口,但不管它是否显示在我的Azure表中,这都是一个掷硬币的过程。是的,我这样做了。似乎我的工作者角色在某个地方悄无声息地崩溃了,在那里我没有一个try-catch代码块。