【问题标题】:Information Logging stops appearing part way through azure worker role onStart()信息记录通过 azure worker 角色 onStart() 停止出现
【发布时间】:2017-09-07 10:18:28
【问题描述】:

我有一个工作角色,它在其 onStart() 方法中与 azure 服务总线通信,因此需要一些时间才能完成。

我在这个方法中同时有错误和信息跟踪日志(错误日志只是为了证明代码正常执行而不是阻塞)。

Trace.TraceInformation($"Info: About to check queue exists"); 
Trace.TraceError($"Error: About to check queue exists"); 
if (!(namespaceManager.QueueExists(sourceQueueName)))
{
    Trace.TraceError($"Message = Unable to find source queue: {SourceQueueName} in service bus: {ConnectionString}");
}
else
{
    Trace.TraceInformation($"Info: Creating queue client for: {sourceQueueName}");
    Trace.TraceError($"Error: Creating queue client for: {sourceQueueName}");
    sourceClient = QueueClient.CreateFromConnectionString(connectionString, sourceQueueName);
}

这个的输出是:

EventName="MessageEvent" Message="Info: About to check queue exists" TraceSource="WaWorkerHost.exe"
EventName="MessageEvent" Message="Error: About to check queue exists" TraceSource="WaWorkerHost.exe"
EventName="MessageEvent" Message="Error: Creating queue client for: myqueue" TraceSource="WaWorkerHost.exe"

实际上,在对命名空间管理器的调用之上还有更多日志记录,所以我可以看到信息日志记录在一个稍微随机的地方停止,但总是在调用 namespaceManager.QueueExists 之前,这是一个阻塞网络调用。

当我部署我的角色时,我总是在部署后通过 Visual Studio 将应用程序日志设置为信息(更新服务器资源管理器中云服务的诊断)。每次部署后,日志记录级别总是会自动重置为错误,所以我必须这样做。

所以我假设在“发布”期间,信息记录仍从上次打开,但在重新部署期间的某个时刻,它会切换回错误(直到我返回并将其设置回信息记录)。

有没有办法在发布期间获取信息记录?我曾假设诊断配置中设置的日志记录级别是关于将哪些日志复制到 Azure 存储,而不是首先记录的内容。不是这样吗?如何在整个 onStart() 过程中以及在发布和手动更新诊断之间查看信息记录?

谢谢

【问题讨论】:

    标签: c# .net azure logging visual-studio-2015


    【解决方案1】:

    有没有办法在发布期间获取信息记录?我曾假设诊断配置中设置的日志记录级别是关于将哪些日志复制到 Azure 存储,而不是首先记录的内容。不是这样吗?如何在整个 onStart() 过程中以及在发布和手动更新诊断之间查看信息记录?

    我也在自己这边创建了一个测试云服务并发布到天蓝色。它运作良好。如果您在发布之前设置了正确的诊断配置(天蓝色)。 Azure 不会更改设置。

    注意:确保您选择了正确的服务配置。

    发布到 azure 后,您会发现诊断是正确的。

    如果您想查看发布的日志,可以使用 azure web portal 打开操作日志(经典)。

    【讨论】:

    • 谢谢白兰度。我试过了,但在后续发布时我仍然会收到级别错误的应用程序日志。而且我还必须在诊断设置(诊断扩展)中检查传输 ETW 日志。
    • 您能告诉我您现在使用的是哪个 Visual Studio 版本和诊断版本吗?在我看来,当您发布应用程序时,Azure 不会更改诊断设置。我使用了最新的 VS2017 和最新的诊断程序。我建议你可以尝试更新VS再试一次。
    • Microsoft Visual Studio Professional 2015 版本 14.0.25431.01 更新 3。好的,我将在另一台 PC 上尝试 VS2017。谢谢。
    【解决方案2】:

    我需要为我的工作角色更新 diagnostics.wadcfgx 文件。

    我将DiagnosticMonitorConfiguration 中的scheduledTransferLogLevelFilter 从错误更改为信息:

    <DiagnosticsConfiguration xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
            <WadCfg>
                <DiagnosticMonitorConfiguration>
                    ...
                    <Logs scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Information" />
                </DiagnosticMonitorConfiguration>
                ...
             </WadCfg>
         </PublicConfig>
         ...
    </DiagnosticsConfiguration>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      相关资源
      最近更新 更多