Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置Azure跟踪日志记录开关-为什么在2个位置而不是1个位置?_C#_.net_Azure_Azure Storage_Azure Worker Roles - Fatal编程技术网

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

C# 设置Azure跟踪日志记录开关-为什么在2个位置而不是1个位置?,c#,.net,azure,azure-storage,azure-worker-roles,C#,.net,Azure,Azure Storage,Azure Worker Roles,在试图找出如何获取Azure Web/Worker角色的日志信息时,许多帖子建议我需要在两个位置设置配置设置 1配置.config文件 我不明白为什么每个人都建议我们必须定义两次日志过滤器级别 配置文件是否足够?在第一个文件中,您将告诉您的应用程序网站等。您希望使用哪种跟踪侦听器。或者换句话说,当你写一些像Trace.WriteLinesMething这样的东西时,谁应该听这些信息 在第二个位置,您告诉运行在VM中的diagnostics monitor引擎如何处理发送给它的跟踪数据 例如,在已

在试图找出如何获取Azure Web/Worker角色的日志信息时,许多帖子建议我需要在两个位置设置配置设置

1配置.config文件 我不明白为什么每个人都建议我们必须定义两次日志过滤器级别


配置文件是否足够?

在第一个文件中,您将告诉您的应用程序网站等。您希望使用哪种跟踪侦听器。或者换句话说,当你写一些像Trace.WriteLinesMething这样的东西时,谁应该听这些信息

在第二个位置,您告诉运行在VM中的diagnostics monitor引擎如何处理发送给它的跟踪数据

例如,在已配置的code OnStart方法中:

config.Logs.ScheduledTransferLogLevelFilter=LogLevel.Warning

这意味着diagnostics monitor引擎只接受日志级别警告或更高级别的跟踪消息,即只考虑将这些消息传输到存储器中。因此,即使您正在代码中写入Trace.information,诊断监视器也会忽略它

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

缓冲区配额-在缓冲区被翻转之前,应该在缓冲区中保留多少数据。 传输到存储-您希望将数据传输到Windows Azure存储的频率。
在第一个例子中,您告诉您的应用程序网站等,您希望使用哪种跟踪侦听器。或者换句话说,当你写一些像Trace.WriteLinesMething这样的东西时,谁应该听这些信息

在第二个位置,您告诉运行在VM中的diagnostics monitor引擎如何处理发送给它的跟踪数据

例如,在已配置的code OnStart方法中:

config.Logs.ScheduledTransferLogLevelFilter=LogLevel.Warning

这意味着diagnostics monitor引擎只接受日志级别警告或更高级别的跟踪消息,即只考虑将这些消息传输到存储器中。因此,即使您正在代码中写入Trace.information,诊断监视器也会忽略它

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

缓冲区配额-在缓冲区被翻转之前,应该在缓冲区中保留多少数据。 传输到存储-您希望将数据传输到Windows Azure存储的频率。
@Gaurav Mantri的回答可能正是你所需要的。 但是,

配置文件是否足够

我不知道你所说的充分是什么意思。 Azure云服务已经预定义了DiagnosticsMontiro的默认值,因此您不必添加这些代码行

实际上,由于Azure配置中的几乎所有内容都可以从应用程序外部控制,因此最好不要在代码中更改配置

以下资料摘自:

Windows Azure SDK使您能够使用XML配置文件Diagnostics.wadcfg配置诊断,而不是在角色的OnStart方法中以编程方式配置诊断。与编写代码相比,这种方法有几个优点:

诊断在调用OnStart方法之前启动,因此可以捕获并记录启动任务中的错误。 重新启动后,在运行时对配置所做的任何更改都将保留。 诊断配置更改不需要重新生成代码。 您可以在特定配置中自动启动诊断监视器,而不需要额外的代码,这可能会导致异常,从而阻止您的角色启动。
@Gaurav Mantri的回答可能正是你所需要的。 但是,

配置文件是否足够

我不知道你所说的充分是什么意思。 Azure云服务已经预定义了DiagnosticsMontiro的默认值,因此您不必添加这些代码行

实际上,由于Azure配置中的几乎所有内容都可以从应用程序外部控制,因此最好不要在代码中更改配置

以下资料摘自:

Windows Azure SDK使您能够使用XML配置文件Diagnostics.wadcfg配置诊断,而不是在角色的OnStart方法中以编程方式配置诊断。与编写代码相比,这种方法有几个优点:

诊断在调用OnStart方法之前启动,因此可以捕获并记录启动任务中的错误。 重新启动后,在运行时对配置所做的任何更改都将保留。 诊断配置更改不需要重新生成代码。 您可以在特定配置中自动启动诊断监视器,而不需要额外的代码,这可能会导致异常,从而阻止您的角色启动。
嗨,高拉夫!那部门呢?这不是被“重复”两次的部分吗?@Pure.Krome不太可能。代码中的一个指定诊断引擎将哪些类型的日志传输到存储器。配置文件中的switch语句将决定侦听器是否应该侦听特定的跟踪消息。。。然后代码说。。将任何信息及以上内容移动到存储中。。这是重复。除非我对的理解有误,否则您是在告诉diagnostics跟踪侦听器侦听其中指定的所有跟踪条目,而使用代码您是在告诉应该在存储中保留哪些信息。因此,很有可能通过配置收集应用程序中的所有内容,但是通过代码只在存储中保留某些日志类型。现在有人可能会争辩说,同样的事情也可以在配置本身中完成,如果你只是在跟踪上下文中观察,它可能是正确的,但是Azure中的诊断模块也包含了其他东西。Contd.Diagnostics module为您提供了一站式服务,用于从事件日志、性能计数器、IIS日志等进行整个诊断配置。因此,您只需在一个地方配置您需要收集的所有诊断信息,而无需分散信息或自己进行配置。您好@gaurav!那部门呢?这不是被“重复”两次的部分吗?@Pure.Krome不太可能。代码中的一个指定诊断引擎将哪些类型的日志传输到存储器。配置文件中的switch语句将决定侦听器是否应该侦听特定的跟踪消息。。。然后代码说。。将任何信息及以上内容移动到存储中。。这是重复。除非我对的理解有误,否则您是在告诉diagnostics跟踪侦听器侦听其中指定的所有跟踪条目,而使用代码您是在告诉应该在存储中保留哪些信息。因此,很有可能通过配置收集应用程序中的所有内容,但是通过代码只在存储中保留某些日志类型。现在有人可能会争辩说,同样的事情也可以在配置本身中完成,如果你只是在跟踪上下文中观察,它可能是正确的,但是Azure中的诊断模块也包含了其他东西。Contd.Diagnostics module为您提供了一站式服务,用于从事件日志、性能计数器、IIS日志等进行整个诊断配置。因此,您只需在一个地方配置您需要收集的所有诊断信息,而无需将信息分散开来或自行执行。
<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>
DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();
config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Warning;
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);