0

Windows Azure Web ロールとしてデプロイされた WCF サービスがあります。

例外処理にエンタープライズ ライブラリを使用していますが、ローカルの開発ファブリックでは、イベント ログ ハンドラー (アプリケーション イベント ログへのログ記録) を使用して、例外が正しく処理およびログ記録されているようです。

Azure で実行している場合、例外ポリシーが適用されているように見えますが (予想される特定の例外が正しく処理されていることを確認しているため)、イベント ログには何も記録されません。

例外処理ポリシーは次のとおりです。

<add name="Entity">
  <exceptionTypes>
    <add name="All Exceptions"
         type="System.Exception, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
         postHandlingAction="NotifyRethrow">
      <exceptionHandlers>
        <add name="Logging Exception Handler"
             type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
             logCategory="General" 
             eventId="100" 
             severity="Error" 
             title="Enterprise Library Exception Handling"
             formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling"
             priority="0" />
      </exceptionHandlers>
    </add>
  </exceptionTypes>
</add>

ロギング構成は次のとおりです。

 <loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
   <listeners>
     <add name="Event Log Listener"
          type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" source="Enterprise Library Logging" formatter="Text Formatter"
          log="Application" 
          machineName="." 
          traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack" />
  </listeners>
  <formatters>
    <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
         template="Timestamp: {timestamp}{newline}&#xA;Message: {message}{newline}&#xA;Category: {category}{newline}&#xA;Priority: {priority}{newline}&#xA;EventId: {eventid}{newline}&#xA;Severity: {severity}{newline}&#xA;Title:{title}{newline}&#xA;Machine: {localMachine}{newline}&#xA;App Domain: {localAppDomain}{newline}&#xA;ProcessId: {localProcessId}{newline}&#xA;Process Name: {localProcessName}{newline}&#xA;Thread Name: {threadName}{newline}&#xA;Win32 ThreadId:{win32ThreadId}{newline}&#xA;Extended Properties: {dictionary({key} - {value}{newline})}" 
         name="Text Formatter" />
  </formatters>
  <categorySources>
    <add switchValue="All" name="General">
      <listeners>
        <add name="Event Log Listener" />
      </listeners>
    </add>
  </categorySources>
  <specialSources>
    <allEvents switchValue="All" name="All Events" />
    <notProcessed switchValue="All" name="Unprocessed Category" />
    <errors switchValue="All" name="Logging Errors &amp; Warnings">
      <listeners>
        <add name="Event Log Listener" />
      </listeners>
    </errors>
  </specialSources>
</loggingConfiguration>

何がうまくいかないのですか?

4

2 に答える 2

3

ロギングを行う最善の方法は、診断トレース リスナーを使用することです。Windows Azure のイベント ログの名前は異なります。このエンタープライズ ライブラリを使用するには、イベント ログ リスナーから Windows Azure 診断トレース リスナーに変更する必要があります。これについては、書籍「 Moving Applications to the Cloud 」に詳しい情報があります。コードは VS 2008 にありますが、VS 2010 で開いてサンプルを表示できます。コードで、Windows Azure Diagnostic Trace Listener を使用して Enterprise Library Logging をセットアップする方法を確認します。情報を確認するには、ログを移動する必要があります。これについては本書に詳しく書かれています。

簡単に確認したい場合は、Windows Azure で Enterprise Library を使用する方法を示す codeplex サイトから音楽アプリケーションをダウンロードできます。これは、アップグレードに取り組んでいる古いバージョンです。

トレースの詳細については、こちらを参照してください。

于 2011-05-12T18:14:19.187 に答える
1

イベント ログ トレース リスナーを既定の設定で使用するための前提条件は、既定のイベント ソース ("Enterprise Library Logging") がインストールされていることを確認することです。このイベント ソース (またはその他のカスタム ソース) をインストールしてこのリスナーを使用するには、Windows PowerShell スクリプトを実行するスタートアップ タスクを使用できます。これらのスクリプトは、カスタム ソースをインストールします。対応する PowerShell スクリプトを使用したQuickStartは、このアプローチを使用します。

于 2013-08-14T17:33:40.177 に答える