使用logParser查询svc日志文件

时间:2011-12-21 20:01:34

标签: enterprise-library trace logparser svc

我使用企业库TraceManager为我的程序生成了一个xml跟踪。它很棒。使用Microsoft服务跟踪查看器,我可以看到每次调用单独的跟踪。

我很想查询文件,所以我找到了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>

Log生成许多行,如:

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

1 个答案:

答案 0 :(得分: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文件的ENTITY svclog

现在您应该能够解析Xml输入。