在启动任务运行之前启用DiagnosticsMonitorTraceListnener

时间:2012-01-19 19:16:20

标签: azure azure-diagnostics

我想在我的启动任务中添加跟踪。我试图在所有实际启动任务之前运行的powershell脚本中启用DiagnosticsMonitorTraceListener。代码:

Add-Type -Path ./Microsoft.WindowsAzure.Diagnostics.dll
$listener = new-object -type Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener 

[System.Diagnostics.Trace]::Listeners.Add($listener)

$credentials = new-object -type Microsoft.WindowsAzure.StorageCredentialsAccountAndKey -argumentlist "ACCOUNT_NAME", "ACCOUNT_KEY"
$dmConfig = Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor]::GetDefaultInitialConfiguration();
$dmConfig.Logs.ScheduledTransferPeriod = [System.TimeSpan]::FromMinutes(1)
[Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor]::Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", $dmConfig)

出于某种原因,我的痕迹是这样的:

[System.Diagnostics.Trace]::TraceInformation("Starting startup tasks")

永远不会转移到Azure存储。该脚本运行没有任何问题。 我知道有一种方法可以使Azure诊断基础结构复制启动任务生成的日志,但据我所知,只有在角色启动时才会启动DiagnosticMonitor。如果启动任务失败并且角色永远不会运行 - 日志不会保留。

如果我采取错误的方式解决这个问题,请告诉我。感谢。

1 个答案:

答案 0 :(得分:0)

如果您使用的是Visual Studio Ultimate,则可以使用IntelliTrace。这可以在启动期间查看很多内容。对于外部任务以及类似的事情,请查看:

http://blog.smarx.com/posts/windows-azure-startup-tasks-tips-tricks-and-gotchas

http://leastprivilege.com/2011/03/04/logging-output-of-azure-startup-tasks-to-the-event-log/