wp_loaded with static Singleton

You are just doing it wrong. The problem starts with using a singleton, just never do it.

You have a class of loggers which logs into some internal buffer. All loggers log into the same buffer, therefor the buffer (trace in your case) a static array in the class.
No more get_intance, just instantiate a new logger and log. This gives you the added flexibility of having several classes of loggers that “output” to the same buffer.

We are left with a question of how to inspect the log, and this you do with a static method.

I am sure this scheme can be improved by people that are more hard core OOP than me, using singleton is equivalent to using a namespace and code written under a namespace is easier to read and use than the singleton, just call a function directly with no need to handle the complications of getting an object first, it is easier to use a function in a hook, etc.