我有一个 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。
如何在仍然能够使用 DiagnosticMonitor 的同时使 RoleEnvironment 对应用程序可用?
我将应用程序连接字符串存储在服务配置中。
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();
}