我们使用Windows Azure Diagnostics Monitor跟踪侦听器将跟踪日志发送到Azure Diagnostics.由于我们有大量详细的日志,因此我们决定停止将这些日志发送到Azure Diagnostics,以进行简单调试.
但是,当我们设置ScheduledTransferLogLevelFilter属性时,Azure Diagnostics似乎会忽略它;因此所有Verbose日志仍在发货.
我们使用的配置部分是:
<code><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>
</code>
代码是:
<code>var config = DiagnosticMonitor.GetDefaultInitialConfiguration(); config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Information; config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1d); DiagnosticMonitor.Start(CONNECTION_STRING, config); </code>
还有其他人遇到这个问题吗?是否需要设置一组其他配置值来停止跟踪日志发送详细条目?
编辑:
Avkash Chauhan让我步入正轨;您需要显式保存配置;最终代码看起来像这样,并按预期运行.
<code>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);
}
</code>
解决方法:
我认为您没有正确保存配置设置,这可能会导致问题.过去我曾看到过,如果您不将SetCurrentConfiguration()与配置对象一起使用,则不会保存该设置,因此在“诊断”监视器运行时,您将看不到效果.尝试添加SetCurrentConfiguration()来检查是否是这种情况.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!