我想在我的启动任务中添加跟踪。我试图在所有实际启动任务之前运行的 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。如果启动任务失败并且角色永远无法运行怎么办 - 日志不会持久化。
如果我以错误的方式解决此问题,请告诉我。谢谢。