2011-12-21 5 views
3

エンタープライズライブラリTraceManagerを使用して自分のプログラムのxmlトレースを生成しました。それは素晴らしい作品です。マイクロソフトのサービストレースビューアを使用すると、コールごとに個別のトレースが表示されます。logParserを使用したsvcログファイルの照会

私はMicrosoft Logparserを見つけたので、私はそれを使うことができると期待していました。残念ながら、私は予想される入力形式を理解できません。 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> 

ログのような行数を生成します。

は、誰もが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トレースリスナーにフックアップされてきました

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

答えて

2

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

XMLドキュメントあなたはSVCLogファイルをインポートENTITYsvclogを宣言

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

DTD文書

<!ENTITY svclog SYSTEM "SVCLog.xml"> 

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

関連する問題