Задать вопрос
@Firsov36
full-stack web developer

Сквозное логирование между классами в PHP?

Здравствуйте.

Есть класс для загрузки и обновления информации на сайте. В class InfoCollection сначала идет вызов class XmlLoader, в котором загружаются xml данные, подготавливаются определенные массивы данных с нужной структурой, проверяются безопасность и корректность данных. далее InfoCollection обращается к class DataUpdater, которому передаются подготовленные массивы данных и тут уже совершаются разные манипуляции по передаче данных, обновлению информации в базе данных сайта и т.д.

Во всех классах и их методах есть куча разных проверок и вывода ошибок, но также хочется вести логирование чуть ли не каждого этапа.

На данный момент в class InfoCollection я подключаю $log = new class Logger('/путь.log'), в котором с различными поступающими данными в итоге получается текстовый файл построчно выводящий информацию.

Чувствую, что уже что-то не правильно объясняю, но надеюсь меня поймут.

В классах XmlLoader и DataUpdater я использую просто переменную массив, в которую скидываю все происходящие, а далее в InfoCollection после каждого обращения, если в XmlLoader->log; или DataUpdater->log что-то есть, то отдаю это class Logger, который все записывает в файл.

При любом exception или ошибках, все это логирование может не сработать.
Можно было бы классам XmlLoader и DataUpdater сделать extends InfoCollection, но эти классы используются и в других задачах.

Как правильно надо делать? В каждом классе подключать Logger, и всем классам просто передавать путь до файла-лога? Но тогда в памяти будет куча классов Logger?

Как вообще правильно организовывать логирование при использовании разных классов или в ООП пространствах
  • Вопрос задан
  • 207 просмотров
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
PageAuditRU
@PageAuditRU
Senior SEO Анализатор
Делайте, как удобно. В памяти будет висеть только одна копия кода класса Logger.
Можете логгер подмешать в каждый класс через trait.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы