Подход к ведению журнала в PHP - PullRequest
3 голосов
/ 09 марта 2012

Я создал простой класс LogHelper со статическим методом, который я вызываю в своем приложении. Я могу назвать это следующим образом:

LogHelper::writeToErrorLog($config->getLogPath(), $exception);  or
LogHelper::writeToErrorLog($config->getLogPath(), $exception, $config->getLogFile);

Метод writeToErroLog создаст имя файла журнала, если оно не было передано в него.

У меня есть другой класс, называемый Config, который в основном принимает файл XML и предоставляет значения через методы получения и установки. Это инициализируется в начале приложения и содержит путь к журналу, в который необходимо записывать журналы ошибок.

Мои требования состоят в том, чтобы при каждом запуске приложения я создавал один файл журнала с тем же именем файла. Когда приложение завершит работу, журналы, если они будут заполнены, будут отправлены по электронной почте.

Мое приложение имеет множество других классов для БД, анализа данных, форматирования данных и т. Д., И все они требуют регистрации в определенный момент. Большинство моих ошибок будет происходить из-за исключений, которые будут возникать в родительском классе, перехваченном и обработанном LogHelper. Будет несколько случаев, когда я не хочу генерировать исключения и просто захочу регистрировать информацию или ошибки.

Меня беспокоит то, что я чувствую, что постоянно передаю конфигурацию каждому классу, требующему регистрации, что кажется неправильным. Кроме того, я хочу установить имя файла журнала ошибок только один раз. Есть ли лучший способ приблизиться к этому?

ТИА

Материал

1 Ответ

1 голос
/ 09 марта 2012

Рассматривали ли вы использование set_exception_handler () ?Вам не нужно было бы помещать регистратор в каждый класс, он просто обрабатывал бы все неперехваченные исключения.Вы можете вызвать его в процессе начальной загрузки или в другом месте инициализации приложения следующим образом:

set_exception_handler(array("MyClassName", "functionNameHere"));

Внутри этой функции вы можете вызвать LogHelper::writeToErrorLog().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...