This improves on two issues:
- Echo component is NOT a logger component, but Logger component IS an Echo component: Hierarchy is reverted.
- Logger component should only assemble the message to be logged if the proper log level is enabled. Otherwise it assembles a message that will not be used.
Since lots of users mock external services using echo, especially for performance measurements, it's very important that echo is as lightweight as possible.
Also, production systems using logger would suffer if for each message that they don't want to be logged, all the message is assembled and then discarded.