Implements both an abstraction for various logging mechanisms and the Subject end of a Subject-Observer pattern.