2

Web ロール (2 つのインスタンス) と worker ロール (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);

いくつかのメッセージを追加すると、worker ロールが同じエントリを 2 回記録していることに気付きました。何かを変更する必要がありますか?

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 に答える