Есть класс для загрузки и обновления информации на сайте. В 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?
Как вообще правильно организовывать логирование при использовании разных классов или в ООП пространствах
Класс в некоторых случаях все же будет кушать память. Вот тут в посте и комментариях есть пояснения и споры. По моим тестам, тоже отъедается чуть памяти. В данном случае не критично, но хотелось бы вопрос логирования изучить со всех сторон, в том числе и чтобы память не нагружать лишними данными.
Через trait даже не подумал, надо будет потестировать в этом направлении, спасибо!