2017-09-07 5 views
0

私はonStart()メソッドでazureサービスバスと通話するワーカーロールを持っているため、完了するまでに時間がかかります。情報azureワーカーロールによって途中でロギングが停止するonStart()

このメソッドには、エラーと情報の両方のトレースログがあります(エラーログは、コードが正常に実行され、ブロックされていないことを証明するためのものです)。

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" 

実際にそこnamepaceマネージャへの呼び出し上記よりロギングがあるので、私は情報のロギングが少しランダムな場所に停車していることがわかりますが、常に前namespaceManager.QueueExistsの呼び出しは、ブロックするネットワーク呼び出しです。

私は自分の役割を展開するときに、アプリケーションログが展開された後、常にアプリケーションスタジオを通して情報に設定します(サーバーエクスプローラでクラウドサービスの診断を更新します)。すべての展開の後、ロギングレベルは何とか自動的にエラーに自動的にリセットされるため、これを行う必要があります。

私は '公開中'情報のロギングが前回から切り替えられていると仮定しますが、再デプロイ中のある時点では、エラーに切り替わります(情報ロギングに戻るまで) 。

パブリッシュ中に情報を取得する方法はありますか?私は、診断設定で設定されたログレベルは、最初に記録されたログではなく、何のログが空のストレージにコピーされたかに関するものであると仮定していました。そうじゃないの?どのようにしてonStart()プロセスを通じて情報をログに記録できますか?診断を公開して手動で更新する方法は?

おかげ

答えて

0

私は私のWorkerロール用diagnostics.wadcfgxファイルを更新する必要がありました。

私はエラーからの情報にDiagnosticMonitorConfigurationscheduledTransferLogLevelFilterを変更:

<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> 
0

中の公開ログ情報を取得する方法はありますか?私は、診断設定で設定されたログレベルは、最初に記録されたログではなく、何のログが空のストレージにコピーされたかに関するものであると仮定していました。そうじゃないの?どのようにしてonStart()プロセスを通じて情報をログに記録できますか?診断を公開して手動で更新する方法は?

私はまた、私の側にテストクラウドサービスを作成し、青空に公開しました。それはうまくいく。パブリッシュする前に適切な診断設定(青色)を設定した場合。 Azureは設定を変更しません。

注意:適切なサービス構成を選択していることを確認してください。

enter image description here

紺碧に発行した後、あなたが診断を見つけることができる権利です。

enter image description here

あなたが出版されたログを確認したい場合は、操作ログ(古典)を開くには紺碧のウェブポータルを使用することができます。

enter image description here

+0

おかげブランドを。私はこれを試みたが、私は引き続き公開時にレベルエラーでアプリケーションログを取得する。また、診断設定(診断拡張)で転送ETWログを確認する必要があります。 – andrea

+0

現在使用しているVisual Studioバージョンと診断バージョンを教えてください。私の意見では、あなたがアプリケーションを公開したとき、紺碧は診断設定を変更しません。最新のVS2017と最新の診断ツールを使用しました。 VSを更新してやり直してみてください。 –

+0

Microsoft Visual Studio Professional 2015バージョン14.0.25431.01アップデート3.別のPCでVS2017を試してみます。ありがとうございました。 – andrea

関連する問題