Как логировать ошибки плагина в файл error_log внутри папки плагина
Как можно логировать ошибки, относящиеся к конкретному плагину, в файл error_log
, расположенный в корневой папке самого плагина?
Примеры ошибок:
- Синтаксические ошибки
- Ошибки базы данных
- Ошибки совместимости
- Фатальные ошибки PHP
- Ошибки AJAX-запросов
Аналогично файлу /wp-content/debug.log
, который создается при определении WP_DEBUG_LOG
как true
в файле wp-config.php
(но только для конкретного плагина, отделяя его ошибки от общих ошибок системы).
Исследование:
Отладка плагинов в официальной документации Codex упоминает использование сторонних плагинов для отладки.
Не разрабатывайте без отладкиот Smashing Magazine описывает общесистемную отладку.
Руководство по плагинам не содержит конкретных рекомендаций по этому вопросу.

Установив второй аргумент в значение 3 для функции error_log
:
$pluginlog = plugin_dir_path(__FILE__).'debug.log';
$message = 'КАКАЯ-ТО ОШИБКА'.PHP_EOL;
error_log($message, 3, $pluginlog);

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

По всем признакам и после дополнительного изучения предоставленной документации, это выглядит правильным решением для поставленной задачи. Обработка ошибок обычно требует больше кода, но это выходит за рамки описанной проблемы, и я считаю, что это решение будет хорошо работать с обработкой исключений через блоки try()
и catch()
(этот вариант я буду исследовать дальше...).

Да, я понял, что раз вы упомянули столько разных типов ошибок, вам нужно что-то универсальное, как это решение, чтобы можно было тестировать и логировать сообщения там, где необходимо. Помимо исключений, как вы отметили, для фатальных ошибок PHP потребуется дополнительная обработка через register_shutdown_function
или использование хука shutdown, например: add_action('shutdown', 'custom_catch_fatals');

Я недавно использовал некоторые из этих вещей в проекте, так что вам может пригодиться для справки: https://gist.github.com/majick777/6c4e4074ce4a59fe09f7baa855732aee
