2011-01-24 19 views
2

Ent Lib 4.1ロギングアプリケーションブロックを使用するアプリケーションがあります。このアプリケーションはXP SP2 +、Windows Vista、およびWindows 7で動作します。Microsoftエンタープライズライブラリ4.1 Windows XP SP3でロギングが失敗する

ほとんどの場合、私のロギングはうまくいきます。 (通常、イベントログのトレースリスナを対象としています)。時には、何がトリガするのかよくわからない場合、Windows XPマシンは単にログを停止します。フラットファイルトレースリスナーを追加して、問題がイベントログにあったかどうかを確認しようとしましたが、フラットファイルも機能しませんでした。再起動しても問題は解決しません。

障害が発生したすべてのマシンで、以前は動作していました。また、Windows XP SP2/SP3とは隔離されているようです。 Vistaや7では発生しません。

アイデア?

更新:フラットファイル以外のすべてのトレースリスナーを削除しようとしましたが、これはうまくいきました。したがって、イベントログトレースリスナーに問題があります。明らかに何が起きていても、Ent Libはロギングプロセスに関するエラーを含め、何もログに記録されません。

答えて

3

@RMD、あなたは正しいです。例外が発生すると(たとえば、イベントログがいっぱいになると)、そのカテゴリの他のすべてのトレースリスナは処理されなくなります。

トレースリスナーのログエントリは記録されません。

一方、完全に真実ではありません。はい、通常のトレースリスナーはすべて処理されませんが、エラーはまだあります。それが適切な権限を持つセットアップし、ディスクがいっぱいでなかった場合

<specialSources> 
    <errors switchValue="All" name="Logging Errors &amp; Warnings"> 
    <listeners> 
     <add name="Error Flat File Destination" /> 
    </listeners> 
    </errors> 
</specialSources> 

:私はすべてのログ・エラーをキャプチャするために(私の経験でEventLogには、などの権限を持つ多くの問題を与える)独自のファイルにこれを設定することはお勧めです(など)、あなたは、元の情報とともに、そのログファイルにエラーを見ているだろう:

Message: Tracing to LogSource 'Your Event Source' failed. Processing for other sources will continue. See summary information below for more information. Should this problem persist, stop the service and check the configuration file(s) for possible error(s) in the configuration of the categories and sinks. 

Summary for Enterprise Library Distributor Service: 
====================================== 
[Original Log Entry] 

Exception Information Details: 
====================================== 
Exception Type: System.ComponentModel.Win32Exception 
NativeErrorCode: 1502 
ErrorCode: -2147467259 
Message: The event log file is full 
Data: System.Collections.ListDictionaryInternal 
TargetSite: Void InternalWriteEvent(UInt32, UInt16, System.Diagnostics.EventLogEntryType, System.String[], Byte[], System.String) 
HelpLink: NULL 
Source: System 

をので、あなたが抽出して、手動で任意のログに挿入することができるかもしれ元のログ情報を取得しますあなたが保存している履歴(例えば、報告、分析)。さらに、ボーナスとして、なぜログエントリが書き換えられないのかについての情報が得られます(うまくいけば!)。

1

私はそれを理解しました。どうやら、1つのカテゴリに対して1つのトレースリスナーが失敗した場合、の任意のトレースリスナーのログエントリは記録されません。言い換えれば、イベントログトレースリスナーが失敗した場合、フラットファイルトレースリスナーは決して呼び出されません。

私のケースでは、イベントログはXPマシンでいっぱいでした。これにより、イベントログトレースリスナが失敗する原因となりました。

関連する問題