Additional Diagnostics in Dependency Injection (#56809)
* Additional Diagnostics in Dependency Injection
Log events when a ServiceProvider is created:
* How many singleton, scoped, transient services?
* Log the list of registrations
Fix #56313
* Add ServiceProvider HashCode to all events.
* Write ServiceProvider information when DependencyInjectionEventSource becomes enabled.
This allows for listeners to attach to a process after it is running, and get the DI information.
* Update new events to use Informational level and to have a Keyword.
* Switch to use WeakReference when holding on to ServiceProviders in DependencyInjectionEventSource.