Support logging produces messages for support staff and system administrators. Unlike diagnostic logging, it is part of the application's observable behavior when stakeholders require it. section 8.6 section 8.8
Treat support logging as functionality that uses an out-of-process dependency. Test interactions with log storage, but verify them through an explicit DomainLogger rather than directly mocking ILogger. section 8.6 section 8.8
Extract a business logging operation
Instead of embedding a raw message in User.ChangeEmail, call _domainLogger.UserTypeHasChanged(UserId, oldType, newType). DomainLogger then translates that named operation into an ILogger message, giving tests a stable business-facing interaction.
When support logging represents a domain change, record a domain event in the model and convert it into a DomainLogger call in the controller. Keep diagnostic logging separate and use it sparingly. section 8.8
Inject loggers explicitly through constructors or method arguments. Avoid static logger fields, which hide dependencies and make interactions less explicit.
