-
Notifications
You must be signed in to change notification settings - Fork 5
Topic: System.Diagnostics Deep Dive #25
Description
I feel like diagnostics/tracing/logging topics in corefx don't get enough interest from the community and I'd love to hear if you agree and what could be done to improve this.
Example: We now have integrated distributed tracing with the new "Activity" class and I'm pretty sure that very few people even know about this type. The result is that IMO there hasn't been enough community feedback during the API design phase.
Also, due to the long history of this namespace, there now exist quite a few ways to do similar things and I think it becomes increasingly difficult for people to choose the right types because there's no clear guidance for it.
E.g. one has to choose between the following things just in corefx:
- Trace
- Debug
- TraceSource
- EventSource
- DiagnosticSource
- PerformanceCounter
- EventCounter
- EventLog
- Activity
In addition to that, the following Microsoft libraries also cover this area:
- Microsoft.Extensions.Logging
- EventFlow
- Application Insights (The TelemetryClient has its own logging/metrics/... methods)
And of course, there's an overwhelming amount of 3rd party libraries in this area (AppMetrics, log4net, Serilog, NLog, LibLog, ...).
It is my impression that people are not happy with what is offered by corefx and therefore prefer to build their own solutions (within Microsoft [Microsoft.Extensions.Logging] and in the community [Serilog, ...]). Also, I think that a lot of regular developers don't even know about most of these types.
Sure, all of these types have their reasons to exist and Vance wrote a great comment about this once but still, I feel like the current state of this area in the .NET ecosystem is way too complex.
Especially in server scenarios it is extremely important to have a good and unified tracing story. Unfortunately, due to this big amount of types/technologies, application developers have to invest a huge amount of time to consolidate these different sources in their environments.
So maybe we could do some sort of "deep dive" in a future stand up with one/some of the area experts and talk about the scope of existing types, the "Microsoft vision" in this area and also ask contributors/community members about their experience with this area?!