TLDR : No, never cross on any recommandation about, and mostly it's indicated to never use or use the least of static instance in .NET Core.
=== EDIT ===
The recommended way is to do not use static nor direct instantiation, and prefer correct DI or lifecycle instruction. DOC here
Long version :
For static class, I ran into a discussion about how to setup the Logger without depending on DI, and how bad are DI for static class.
From the discussion, it appear that static are not wanted in NET core application and have to be managed carefully in lifecycle.
As the Logger extension is a typical middleware using DI in NET Core, there is no (at my knowledge) recommended way to build it in static class, because "by design" it's not meant to be.
So you'd better roll your own or reuse another logger.
In case of it could help, here's the way to build a Logger without DI (but still not static) :
private readonly ILoggerFactory _logfactory;
private readonly ILogger _logger;
==== IN CONSTRUCTOR
_logfactory = (ILoggerFactory) new LoggerFactory();
_logger = new Logger<YourClass>(_logfactory);
Obviously, you can simplify it by not stocking the ILoggerFactory.
Hoped it answer your question.
===== EDIT ======
I had found in the lifecycle documentation the sentence that enforce what I said earlier : link here
The said sentence is :
Best practices are to:
- Design services to use dependency injection to obtain their dependencies.
- Avoid stateful, static classes and members. Design apps to use singleton services instead, which avoid creating global state.
- Avoid direct instantiation of dependent classes within services. Direct instantiation couples the code to a particular implementation.
- Make app classes small, well-factored, and easily tested.
So I think that, as it is the official Microsoft Documentation, it make the final point on the subject.