如何在.NET Core控制台应用程序中添加Socket和WinAPI追踪?

问题描述 投票:12回答:1

在经典的.NET应用程序中,我通过在app.config中添加以下内容来实现。

<system.diagnostics>
<sources>
  <source name="System.Net" tracemode="includehex" maxdatasize="1024">
    <listeners>
      <add name="System.Net"/>
    </listeners>
  </source>
  <source name="System.Net.Cache">
    <listeners>
      <add name="System.Net"/>
    </listeners>
  </source>
  <source name="System.Net.Http">
    <listeners>
      <add name="System.Net"/>
    </listeners>
  </source>
  <source name="System.Net.Sockets">
    <listeners>
      <add name="System.Net"/>
    </listeners>
  </source>
  <source name="System.Net.WebSockets">
    <listeners>
      <add name="System.Net"/>
    </listeners>
  </source>
</sources>
<switches>
  <add name="System.Net" value="Verbose"/>
  <add name="System.Net.Cache" value="Verbose"/>
  <add name="System.Net.Http" value="Verbose"/>
  <add name="System.Net.Sockets" value="Verbose"/>
  <add name="System.Net.WebSockets" value="Verbose"/>
</switches>
<sharedListeners>
  <add name="System.Net" type="System.Diagnostics.TextWriterTraceListener" initializeData="network.log"/>
</sharedListeners>
<trace autoflush="true"/>
</system.diagnostics>

我可以在.NET Core控制台应用程序中实现同样的效果吗?特别是,我需要查看在使用NegotiateStream类进行NTLM认证时调用了哪些WinAPI函数(以及传递了哪些参数)。

到目前为止,我找到的大多是关于在ASP.NET Core应用程序中记录Web API的内容。我的应用程序不是ASP.NET,也没有使用任何Web API。

c# .net-core trace
1个回答
0
投票

在.NET Core中,跟踪的工作方式与.NET框架不同。该框架通过etw(在windows中)发出跟踪事件。要读取跟踪事件,你有两个选择。

  • 使用一个可以解析etw日志的外部工具(dotnet-trace, perfmon, perfview, 一个你用dotnet-trace编写的应用程序)。追踪事件库)
  • 在代码中,通过注册一个自定义的 事件监听器 类。如参见redhat.com的这篇优秀文章。链接
© www.soinside.com 2019 - 2024. All rights reserved.