3

Windows Azure Diagnostics Monitor Trace Listener を使用して、トレース ログを Azure Diagnostics に送信します。多数の詳細なログがあるため、単にデバッグするためにこれらを Azure Diagnostics に送信することを停止することにしました。

ただし、ScheduledTransferLogLevelFilterプロパティを設定すると、Azure Diagnostics によって無視されるようです。そのため、すべてのVerboseログは引き続き出荷されます。

使用する構成セクションは次のとおりです。

<system.diagnostics>
    <trace>
        <listeners>
            <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                name="AzureDiagnostics">
                <filter type="" />
            </add>
        </listeners>
    </trace>
</system.diagnostics>

コードは次のとおりです。

var config = DiagnosticMonitor.GetDefaultInitialConfiguration();

config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Information;
config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1d);

DiagnosticMonitor.Start(CONNECTION_STRING, config);

他の誰かがこの問題に遭遇しましたか? 詳細なエントリを送信するトレース ログを停止するために設定する必要がある構成値のセットの追加セクションはありますか?

編集:

Avkash Chauhan は私を正しい道に導いてくれました。構成を明示的に保存する必要があります。最終的なコードは次のようになり、期待どおりに機能します。

public static void StartLogging()
{
    var cloudStorageAccount = 
        CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(DEFAULT_CONNECTION_STRING));

    var roleInstanceDiagnosticManager =
        cloudStorageAccount.CreateRoleInstanceDiagnosticManager(
            RoleEnvironment.DeploymentId,
            RoleEnvironment.CurrentRoleInstance.Role.Name,
            RoleEnvironment.CurrentRoleInstance.Id);

    var config = roleInstanceDiagnosticManager.GetCurrentConfiguration();

    config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Information;
    config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1d);

    roleInstanceDiagnosticManager.SetCurrentConfiguration(config);

    // Start the diagnostic monitor with the modified configuration.
    DiagnosticMonitor.Start(DEFAULT_CONNECTION_STRING, config);
}
4

1 に答える 1

3

設定を正しく保存しておらず、問題が発生する可能性があります。過去に、構成オブジェクトでSetCurrentConfiguration()を使用しない場合、設定は保存されないため、診断モニターの実行時に効果が表示されないことを確認しました。SetCurrentConfiguration()を追加して、それが当てはまるかどうかを確認してください。

于 2012-07-02T18:30:50.887 に答える