【问题标题】:Cannot stop Verbose Trace Logs from shipping on Windows Azure无法阻止详细跟踪日志在 Windows Azure 上传送
【发布时间】:2012-07-02 19:46:01
【问题描述】:

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

但是,当我们设置 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);
}

【问题讨论】:

    标签: c# logging azure azure-diagnostics


    【解决方案1】:

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

    【讨论】:

    • 听起来很有希望;发现一篇文章 HERE 描述了这一点。
    猜你喜欢
    • 2016-01-02
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多