【发布时间】:2012-03-29 22:52:39
【问题描述】:
我有一个 Azure WebRole,我正在尝试配置日志记录以使用 DiagnosticMonitor。
根据 windowsazure.com 上的文档,日志记录应该在 OnStart 中实现:
Note: The code in the following steps is typically added to the OnStart method of the role.
https://www.windowsazure.com/en-us/develop/net/common-tasks/diagnostics/
为了访问 OnStart 方法,我必须定义一个 RoleEntryPoint。但是一旦定义了它,我就无法访问 Web 应用程序 Application_Start 中的 RoleEnvironment。
如何使 RoleEnvironment 对应用程序可用,同时仍然能够使用 DiagnosticMonitor?
我将应用程序连接字符串存储在服务配置中。
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
// config
var config = DiagnosticMonitor.GetDefaultInitialConfiguration();
LocalResource localResource = RoleEnvironment.GetLocalResource("MyCustomLogs");
DirectoryConfiguration dirConfig = new DirectoryConfiguration();
dirConfig.Container = "wad-mycustomlogs-container";
dirConfig.DirectoryQuotaInMB = localResource.MaximumSizeInMegabytes;
dirConfig.Path = localResource.RootPath;
DiagnosticMonitorConfiguration diagMonitorConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
diagMonitorConfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1.0);
diagMonitorConfig.Directories.DataSources.Add(dirConfig);
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);
return base.OnStart();
}
【问题讨论】:
-
当您尝试访问 Web 应用程序 Application_Start 中的 RoleEnvironment 时会发生什么?
-
这似乎与stackoverflow.com/a/6202411/348841有关,但有人可以解释一下我应该怎么做吗?
-
您是否尝试从 Application_Start (重新)配置您的 DiagnosticsMonitor?
-
@SteveWilkes 它会引发错误。我检查了 RoleEnvironment.IsAvailable 并且它是错误的。如果我排除 RoleEntryPoint 这是真的。
-
@JonasStensved 我们在该配置中有很多项目..您的csdef中配置了站点吗?
标签: c# azure azure-diagnostics