我们使用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);
}
答案 0 :(得分:3)
我认为您没有正确保存配置设置,这可能会导致问题。在过去,我已经看到,如果您不将SetCurrentConfiguration()与您的配置对象一起使用,则不会保存该设置,因此当诊断监视器运行时您将看不到该效果。尝试添加SetCurrentConfiguration()以检查是否是这种情况。