Я недавно прочитал PSR-3
и я заинтересован в том, чтобы узнать, как лучше всего подойти к реализации регистратора в веб-приложении или на веб-сайте. Я понимаю, как определяется регистратор и как его можно реализовать в соответствии с PSR-3, но как насчет доступа к ним или обращения к ним по всему приложению для различных нужд ведения журналов, таких как перехваченные исключения, заметные события и т. Д.?
Эти три варианта пришли на ум. Есть еще? Какой самый лучший подход?
$logger->debug('foo')
Logger::debug('foo')
$app->getLogger()->debug('foo')
Одним из моих соображений является сохранение кода, необходимого для ссылки на регистратор, как минимум. Например, вариант 3, описанный выше, выглядит довольно утомительным, чтобы извлекать регистратор, подобный этому, для каждого соответствующего перехваченного исключения, заметного события и т. Д. Во всем приложении.
Я предпочитаю получать регистратор путем внедрения зависимости для регистратора или вашего третьего варианта.
DI::getInstance()->get('logger')
Логгер по умолчанию легко заменить фиктивным для модульного тестирования или высокой производительностью один раз для производственной среды.
Других решений пока нет …