НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
148 of 182 menu

Таблица watchdog

Таблица watchdog является централизованным журналом событий (логом) в Drupal. В неё записываются сообщения различного уровня важности: от отладочной информации и уведомлений до критических ошибок и предупреждений системы безопасности.

Поля

Поле Тип данных Описание
wid int Уникальный идентификатор записи (первичный ключ). Автоинкремент.
uid int Идентификатор пользователя (users.uid), связанного с событием. Если событие вызвано анонимным пользователем, значение равно 0.
type varchar(64) Тип события. Обычно это имя модуля (например, system, php, user), который инициировал запись в лог, или произвольная категория для группировки сообщений.
message text Текст сообщения на английском языке. Может содержать placeholder-токены (например, %module) для подстановки переменных.
variables longblob Сериализованный массив (serialize()) значений для подстановки в placeholder-токены из поля message.
severity int Уровень важности (серьезности) события. Соответствует константам из RFC 3164: 0 - Emergency, 1 - Alert, 2 - Critical, 3 - Error, 4 - Warning, 5 - Notice, 6 - Info, 7 - Debug.
link varchar(255) Ссылка, связанная с событием, в виде текстового пути (например, admin/reports/dblog).
location text URL-адрес страницы, на которой произошло событие.
referer text URL-адрес реферера (страницы, с которой пользователь перешел на текущую).
hostname varchar(128) IP-адрес пользователя, с которым связано событие.
timestamp int Метка времени Unix, когда произошло событие.

Как это работает

Модули ядра и contrib-модули используют функцию watchdog() (или её аналог \Drupal::logger()- для Drupal 8+) для записи сообщений в лог. Функция принимает параметры: тип события (type), текст сообщения, массив переменных и уровень серьёзности.

При записи сообщения массив переменных сериализуется и сохраняется в поле variables. При отображении записи в отчётах (например, на странице admin/reports/dblog) система десериализует эти переменные и подставляет их на место токенов в тексте сообщения с помощью функции t(), что также позволяет переводить сообщения.

Из-за высокой частоты записи таблица watchdog может очень быстро расти в размерах. Для предотвращения переполнения базы данных рекомендуется регулярно очищать старые записи с помощью встроенного задания Cron (admin/config/system/cron) или модуля Database Logging (dblog), который предоставляет интерфейс для управления записями.

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

Пример SQL-запроса

Вывести 10 последних критических ошибок (Critical) и ошибок (Error) от модуля 'php':

SELECT w.wid, w.timestamp, u.name, w.message, w.severity, w.location FROM watchdog w LEFT JOIN users u ON w.uid = u.uid WHERE w.type = 'php' AND w.severity IN (2, 3) ORDER BY w.timestamp DESC LIMIT 10;

Смотрите также

  • таблицу users,
    которая хранит данные пользователей
  • таблицу sessions,
    которая хранит данные сессий пользователей
  • таблицу batch,
    которая управляет фоновыми задачами
  • таблицу cache_default,
    которая хранит кеш данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить