3

我使用 Enterprise Library 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>

日志产生许多行,如:

  < 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 回答