Factoring out observability from business logic, with a worked example: https://martinfowler.com/articles/domain-oriented-observability.html