gpt4 book ai didi

c# - 设置 Azure 跟踪日志记录开关 - 为什么在 2 个位置而不是 1 个位置?

转载 作者:太空宇宙 更新时间:2023-11-03 21:46:17 28 4
gpt4 key购买 nike

在尝试弄清楚如何获取 Azure Web/Worker 角色的日志信息时,很多帖子建议我需要在两个位置设置配置设置。

1 配置.config文件

<system.diagnostics>
<switches>
<add name="logLevel" value="2" />
</switches>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>

2。以编程方式(即 OnStart 方法)

DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();
config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Warning;
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);

我不明白为什么每个人都建议我们必须定义日志过滤级别两次

配置文件应该足够了吧?

最佳答案

在第一个中,您告诉您的应用程序(网站等)您想要使用哪种跟踪监听器。或者换句话说,当您编写类似 Trace.WriteLine("Something") 的内容时,谁应该收听该消息。

在第二个位置,您将告诉虚拟机中运行的诊断监控引擎如何处理发送给它的跟踪数据。

例如,在您的代码(OnStart 方法)中您已配置:

config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Warning;

这意味着诊断监视器引擎将仅接受日志级别为“警告”或更高级别的跟踪消息,即仅考虑将这些消息传输到存储中。因此,即使您在代码中编写 Trace.Information("Something"),诊断监视器也会忽略它。

您在代码中所做的另一件事是告诉诊断引擎如何处理它收集的诊断数据。您配置的其他一些内容包括:

  • 缓冲区配额 - 在滚动之前缓冲区中应保存多少数据。
  • 传输到存储 - 您希望将数据传输到 Windows Azure 存储的频率。

关于c# - 设置 Azure 跟踪日志记录开关 - 为什么在 2 个位置而不是 1 个位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878946/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com