Необходимо ли давать возможность логирования в каждом контроллере, модели и представлении(view), то есть реализовать вызов $this->logger() в них?
Нет, этого не нужно делать. Тем более не нужно устанавливать логер в Abstract/Base классах.
Когда нужен будет (1 раз в модели/вьюхе, чтобы потестить выдачу), достаете через конструктор/контейнер/другим образом и используете, потом вырезаете. В контроллерах не всегда, обычно в MiddleWare, если они есть.
Нужно ли логировать сам проект через $this->logger()?
Что???