2012-05-02 33 views
1

RollingFlatFileTraceListenerを使用して、ログをXML形式にするためにアプリケーションでローリングログを提供しようとしていますが、アプリはログに記録されていないようです。XmlLogFormatterをエンタープライズライブラリのRollingFlatFileTraceListenerと併用する

<listeners> 
    <clear /> 
    <add name="Rolling Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     fileName="C:\Inetpub\logs\rolling.log" rollFileExistsBehavior="Increment" header="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" footer="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" formatter="Error Formatter" 
     rollSizeKB="12499" maxArchivedFiles="3200" traceOutputOptions="None" timeStampPattern="yyyy-MM-dd" rollInterval="Midnight" /> 
</listeners> 
<formatters> 
    <clear /> 
    <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.XmlLogFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" template="Timestamp: {timestamp(local)}&#xA;Message: {message}&#xA;Category: {category}&#xA;Severity: {severity}&#xA;Title:{title}&#xA;Machine: {machine}&#xA;Extended Properties: {dictionary({key} - {value}&#xA;)}" name="Error Formatter" /> 
</formatters> 

アプリケーションは、ハードフォルトされていないので、私は診断するすべてのエラーを見ることができない、まだ私は今では、いくつかのトレースログを参照してくださいする必要があることを知っています。

更新

現在の進行状況は、私はXMLを指定するには、テンプレートを利用して、のTextFormatterでRollingFlatFileTraceListnerDataを使用することができましたということです。以下のように動作しない2つの項目がまだ

  • ているファイルではなく、それがどのように上の任意の考えを多くのルート要素

を持っている、ファイルが何のルート要素を持っていないXML宣言

  • を持っていませんそれをファイルの先頭と最後に貼り付けますか?

  • 答えて

    1

    ボックストレースのリスナーは、ファイルヘッダーまたはファイルフッターの概念をサポートしていません。ご覧のとおり、基本的にファイルに追加するだけです。 .NET FrameworkのSystem.Diagnostics.XmlWriterTraceListenerを使用しても、XMLフラグメントのみが記述され、整形式のXMLドキュメントは書き込まれません。

    アーカイブファイルがロールバックされた後に整形されるように、アーカイブファイルを変更する別個のプロセスを作成することが、望ましい方法です。そのアプローチの欠点は、アクティブなログファイルがうまく構成されていないことです。

    これが問題になる場合は、カスタムトレースリスナーを作成して、必要な処理を行う必要があります。単純にログファイルに追加するのではなく、XMLドキュメントの終了タグ(たとえば、)を最新のLogEntryと終了タグで上書きすることができます。

    記事Efficient Techniques for Modifying Large XML Filesの別の興味深いアプローチは、XMLフラグメントを含むドキュメントを含む整形式のXMLドキュメントを作成することです。例えば。

    <?xml version="1.0"?> 
        <!DOCTYPE logfile [ 
        <!ENTITY events  
        SYSTEM "XMLFile1.xml"> 
        ]> 
        <logfile> 
        &events; 
        </logfile> 
    
    +0

    これはまさに私が必要とするものです。 – CodeMonkey1313

    関連する問題