无法阻止在Windows Azure上发布详细跟踪日志

时间:2012-07-02 11:41:01

标签: c# logging azure azure-diagnostics

我们使用Windows Azure诊断监视器跟踪侦听器将跟踪日志发送到Azure诊断程序。由于我们有大量详细日志,因此我们决定停止向Azure Diagnostics发送这些日志以进行简单调试。

但是,当我们设置ScheduledTransferLogLevelFilter属性时,Azure诊断似乎忽略了该属性;所以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);
}

1 个答案:

答案 0 :(得分:3)

我认为您没有正确保存配置设置,这可能会导致问题。在过去,我已经看到,如果您不将SetCurrentConfiguration()与您的配置对象一起使用,则不会保存该设置,因此当诊断监视器运行时您将看不到该效果。尝试添加SetCurrentConfiguration()以检查是否是这种情况。