Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add Socket and WinAPI tracing to .NET Core console application?

In classic .NET app, I did this by adding the following in 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>

Can I achieve the same effect in .NET Core console app? In particular, I need to see which WinAPI functions are called (and which parameters are passed) during NTLM authentication with NegotiateStream class.

What I found so far is mostly about logging Web APIs in ASP.NET Core apps. My app is not ASP.NET, neither it uses any web APIs.

like image 417
Alex Avatar asked Feb 20 '17 09:02

Alex


1 Answers

For the new .NET 5 you may try the technique mentioned here and it uses EventListener.

like image 153
Uğur Yıldız Avatar answered Sep 21 '22 05:09

Uğur Yıldız