janfabry
  • 0
Гуру

Как вести журнал действий плагина (cron)?

  • 0

Есть ли рекомендуемый способ регистрировать (неудачные) действия cron из вашего плагина? Например, у меня есть плагин, который каждый час синхронизируется с внешним сервисом. Я хочу регистрировать, сколько было изменено, а также когда синхронизация не удалась. Что бы вы посоветовали здесь? Новая таблица базы данных? Плагин Log Deprecated Notices делает это с настраиваемым типом записи, но это может быть слишком много накладных расходов? Я считаю, что WordPress не поставляется со стандартным пакетом ведения журнала ?

Share
  1. Существует плагин Advanced Cron Manager PRO, в котором есть регистратор.

    • 0
    1. Используйте файл для записи событий. Здесь есть несколько недостатков;

      • Разрешения файловой системы. Когда вы развертываете свое приложение, вам нужно будет не забыть дать веб-серверу разрешение на запись в файл. И чтобы быть более уверенным, вам нужно написать код, который проверяет, можете ли вы писать в файл, и выдает предупреждение, когда вы не можете. Это добавляет сложности и, вероятно, является причиной проблем с развертыванием.
      • Случайное удаление. Вы можете случайно удалить пользовательский файл журнала и потерять свои записи. Это может быть неудобно.
      • Пользовательский формат журнала. Вам нужно будет придумать собственный (машиночитаемый?) текстовый формат для записи событий в ваш файл. Когда вам нужно изменить формат журнала, нет удобного способа перенести старые записи. Если вы хотите провести какой-то анализ журналов, вам придется проанализировать записи. Это приводит к большему количеству кода и большей сложности. Сложность это плохо.
    2. Используйте таблицу базы данных. Создайте свою собственную таблицу базы данных и записывайте туда события. Ни один из перечисленных выше недостатков не применим. Это не добавляет большой сложности. Автоматизируйте создание и удаление таблицы с помощью хука плагина, и я думаю, у вас будет достаточно надежная система журналов.

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

    4. Используйте регистратор ОС. Когда вы используете функцию системного журнала в PHP, вы можете записывать события в системный журнал (системный журнал в Unix, журнал событий в Windows NT). Настройка определяемого пользователем системного журнала усложняет развертывание.

    Ну наконец то; вам следует подумать, хотите ли вы регистрировать обычный случай и исключения или только исключения. Джефф Этвуд написал об этом хорошую статью.

    Надеюсь это поможет!

    • 0
  2. Используйте функцию ведения журнала, подобную этой, чтобы она записывала ваш журнал в debug.log, настроив ваш wp-config.php следующим образом, который я нашел здесь :

    /**
     * This will log all errors notices and warnings to a file called debug.log in
     * wp-content (if Apache does not have write permission, you may need to create
     * the file first and set the appropriate permissions (i.e. use 666) ) 
     */
    define('WP_DEBUG', true);
    define('WP_DEBUG_LOG', true);
    define('WP_DEBUG_DISPLAY', false);
    @ini_set('display_errors',0);
    

    Это должно работать, по крайней мере, для целей отладки/разработки (я не уверен, насколько это было бы здорово для ведения журнала производства, но это работает для разработки).

    • 0
  3. Я согласен, что размещение этих данных wp_posts потенциально может привести к быстрому росту таблицы до неуправляемого размера. Это нормально, чтобы создать таблицу. Я бы сделал все возможное и дал бы кому-нибудь возможность очистить таблицу журналов, если они перестанут использовать свой плагин.

    Я не боюсь плагинов, которые создают таблицы, но, возможно, это потому, что я видел базы данных WordPress с 8 000 000 wp_term_relationships записей и 300 000 сообщений, и я знаю, насколько неприятным может быть этот опыт.

    dbDelta() и register_activation_hook() будут твоими друзьями, здесь. См. Создание таблиц с помощью плагинов.

    • 0

Оставить ответ

You must login to add an answer.