2

我有一个 Web 角色(2 个实例)和一个工作角色(2 个实例),这两个角色都使用以下配置

        DiagnosticMonitorTraceListener tmpListener = new DiagnosticMonitorTraceListener();
        System.Diagnostics.Trace.Listeners.Add(tmpListener);
        string wadConnectionString = "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString";
        CloudStorageAccount storageAccount =
        CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(wadConnectionString));

        RoleInstanceDiagnosticManager roleInstanceDiagnosticManager =
        storageAccount.CreateRoleInstanceDiagnosticManager(RoleEnvironment.DeploymentId,
        RoleEnvironment.CurrentRoleInstance.Role.Name, RoleEnvironment.CurrentRoleInstance.Id);

        DiagnosticMonitorConfiguration config = roleInstanceDiagnosticManager.GetCurrentConfiguration();
        config.Logs.BufferQuotaInMB = 500;
        config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1D);
        config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Information;

        roleInstanceDiagnosticManager.SetCurrentConfiguration(config);

当我添加一些消息时,我注意到辅助角色记录了两次相同的条目。我必须改变什么吗?

4

1 回答 1

3

感谢您的通知,我很乐意再次在这里重新发布我的提示作为答案:

Visual Studio 中的某些项目模板已将 AzureDiagnosticMonitorTraceListener 的实例注册到 Trace.Listeners 集合。在添加新的侦听器之前,您可能需要检查是否已经注册了这样的侦听器:

if (Trace.Listeners.OfType<AzureDiagnosticMonitorTraceListener>().Count() == 0)
{
    Trace.Listeners.Add(new AzureDiagnosticMonitorTraceListener());
}
于 2013-02-12T15:20:28.320 回答