Допустим есть некий ILog , который содержит необходимое для логирования.
Вариант 1. Создать глобальный объект статический класс и статическое поле , доступно везде, только проблема что будет во всех классах привязка к этому статическому классу и полю.
Вариант 2. Классы которые хотят логировать действия в своих методах должны принимать на вход экземпляр ILog. Плохо то что везде нужно в конструкторах этот ILog требовать и в инстанцируемые объекты передавать, еще хуже когда требуется разные логи вести ( в разные файлы ). Например в классе "Автомобиль" есть объекты "Деталь", у которых должен быть свой лог, соотвественно где-то в автомобиле нужно создать новый экземпляр реализующий ILog для деталей.