2013-02-12 59 views
2

我有一个Web角色(2个实例)和辅助角色(2个实例)两个角色使用以下配置天青WadLogsTable包含重复的条目

 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); 

当我添加一些消息我注意到工作者角色日志同样的条目两次。我必须改变一些东西吗?

+0

难道是因为诊断的配置是相同的两个实例,每个实例会写相同的消息。你能否检查同一个实例是否正在写重复消息? – 2013-02-12 10:29:37

+0

每个实例都将其自己的消息写入两次 – 2013-02-12 10:35:21

+0

您是否在添加另一个实例之前检查Trace.Listeners集合中是否已有AzureDiagnosticMonitor? – Nico 2013-02-12 12:56:16

回答

3

感谢您的通知,我会在这里glady我重新发布提示,再次回答:

在Visual Studio中的一些项目模板已经注册AzureDiagnosticMonitorTraceListener的一个实例的Trace.Listeners收藏。您可能要检查是否有这样添加一个新的人之前已经注册的侦听:

if (Trace.Listeners.OfType<AzureDiagnosticMonitorTraceListener>().Count() == 0) 
{ 
    Trace.Listeners.Add(new AzureDiagnosticMonitorTraceListener()); 
}