我们使用 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);
}