It **is** actually needed, I realized the reason - the `GlobalLogger` is a singleton class (to share the same logger globally). If the `DefaultLogger` would be a singleton (after mering with `GlobalLogger`) then it would not be possible to change it by a custom `Logger` instance.

So we need solve two use cases:
- single logger (solved by a `GlobalLogger` singleton)
- replaceable default implementation (`DefaultLogger` class)

And this cannot be solved by a single class AFAIK.