Как логировать ошибки плагина в файл error_log внутри папки плагина

15 янв. 2018 г., 15:31:19
Просмотры: 16.7K
Голосов: 5

Как можно логировать ошибки, относящиеся к конкретному плагину, в файл error_log, расположенный в корневой папке самого плагина?

Примеры ошибок:

  • Синтаксические ошибки
  • Ошибки базы данных
  • Ошибки совместимости
  • Фатальные ошибки PHP
  • Ошибки AJAX-запросов

Аналогично файлу /wp-content/debug.log, который создается при определении WP_DEBUG_LOG как true в файле wp-config.php (но только для конкретного плагина, отделяя его ошибки от общих ошибок системы).

Исследование:

Отладка плагинов в официальной документации Codex упоминает использование сторонних плагинов для отладки.

Не разрабатывайте без отладкиот Smashing Magazine описывает общесистемную отладку.

Руководство по плагинам не содержит конкретных рекомендаций по этому вопросу.

0
Все ответы на вопрос 1
6
12

Установив второй аргумент в значение 3 для функции error_log:

$pluginlog = plugin_dir_path(__FILE__).'debug.log';
$message = 'КАКАЯ-ТО ОШИБКА'.PHP_EOL;
error_log($message, 3, $pluginlog);

http://php.net/manual/en/function.error-log.php

15 янв. 2018 г. 16:48:54
Комментарии

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

UncaughtTypeError UncaughtTypeError
16 янв. 2018 г. 08:49:42

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

UncaughtTypeError UncaughtTypeError
16 янв. 2018 г. 11:23:08

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

majick majick
16 янв. 2018 г. 11:35:38

Спасибо, что упомянули это, я также изучу эти методы.

UncaughtTypeError UncaughtTypeError
16 янв. 2018 г. 11:53:24

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

majick majick
16 янв. 2018 г. 13:13:45

Отлично, это должно помочь лучше понять контекст. Очень признателен!

UncaughtTypeError UncaughtTypeError
16 янв. 2018 г. 13:16:44
Показать остальные 1 комментариев