3

Enterprise Library TraceManager を使用して、プログラムの x​​ml トレースを生成しました。それはうまくいきます。Microsoft Service Trace Viewer を使用すると、呼び出しごとに個別のトレースを確認できます。

ファイルを照会したいので、Microsoft Logparser を見つけ、それを使用できることを期待しました。残念ながら、予想される入力形式を理解できません。XML の入力は、ドキュメントに対して複数のルート ノードが見つかったというエラーを返します。他の形式はどれも正しい行数を解析しません。

SVCLogファイルのクエリに成功した人はいますか

TraceManager traceManager
traceManager = EnterpriseLibraryContainer.Current.GetInstance<TraceManager>();
TraceLogEntry traceEntry = new TraceLogEntry();  

 using (this.traceManager.StartTrace("Tracing")){                
    traceEntry.Title = "Message";
    traceEntry.Priority = Priority;
    this.traceManager.LogWriter.Write(traceEntry);
 }

トレース カテゴリは、XML トレース リスナーに接続されています。

< loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
 < listeners>
   < add name="XML Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.XmlTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.XmlTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    fileName="c:\A2ISOtrace.svclog" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId" />
< /listeners>
< categorySources>    
 < add switchValue="All" name="Tracing">
    < listeners>
      < add name="XML Trace Listener" />
    < /listeners>
  < /add>
< /categorySources>

ログは、次のような多数の行を生成します。

  < E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent"><System <EventID>1</EventID><Type>3</Type>. . . .
4

1 に答える 1

2

SVCLog ファイルにはルート要素がないため、基本的な Xml ドキュメントに埋め込むことができます。

XML ドキュメント

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE Root SYSTEM "Test.dtd">
<Root>
    &svclog;
</Root>

DTD ドキュメント

<!ENTITY svclog SYSTEM "SVCLog.xml">

ここで、SVCLog ファイルをインポートする svclog を宣言しENTITY ます

これで、Xml 入力を解析できるはずです。

于 2011-12-28T18:34:01.313 に答える