I didn’t know about trace-based logger. I would‘ve needed something like this for my master thesis. Instead I‘ve build my own minimal implementation, which is only 66 lines long. It works by wrapping function with a decorator. I‘m actually still using it for an internal dashboard at my current job. I‘m sending the logs as JSON to a Postgres instance for further analysis and it works great.
The key difference between what you did and trace-based logging is that trace-based logging also gives you a tree, so you can see that span A was child of span B. So it’s not just about timing and recording inputs and outputs, but also about causality, connecting the different actions/spans/calls.
(Of course what you did may well be sufficient for your needs, especially if you understand the code well you might not need to explicitly model causality.)
Yes, I‘m well aware of it (and I was thinking about explicitly stating that in my original comment). May be tracing logger isn‘t the correct term for my code then. I wanted to easily measure the impact on performance of arguments to a function and the code was written for that purpose. Nothing more.