Как зарегистрировать сообщение об ошибке в drupal

Как зарегистрировать наш собственные сообщения об ошибках(например: ошибка из-за недопустимой записи даты пользователя), которая генерируется в php до журнал ошибок drupal.

7 ответов


можно использовать watchdog функции :

watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)

цитируя руководство, параметры:

  • $type категория, к которой относится данное сообщение.
  • $message сообщение для хранения в журнале.
  • $variables массив переменных для замены в сообщении на дисплее или NULL, если сообщение уже переведено или невозможно перевести.
  • $severity серьезность сообщения, согласно В RFC 3164
  • $link ссылка для связи с сообщением.

и уровни ошибок можно найти на странице watchdog_severity_levels. Ошибки, вам, скорее всего, использовать WATCHDOG_ERROR, или, может быть, даже что-то более "критическое", в зависимости от вида ошибки.


1) действительно, watchdog-это стандартный способ записи собственных ошибок PHP.

2) Кроме того, если вам нужно немедленно увидеть сообщения об ошибках во время отладки ваших страниц Drupal, вы можете увидеть их в журнале/печати прямо на соответствующей странице в консоли FireBug. Иногда это очень удобно, когда вы можете видеть связанные со страницей журналы just-in-time. Это требует - в Devel модуль Палий расширение для FireFox и, возможно,Firephp.

вы можете использовать функцию dfb () для записи сообщений журнала непосредственно на общую консоль Firebug.

dfb($input, $label = NULL)

Если вы хотите сохранить связанные с Drupal сообщения журнала из обычной консоли Firebug, вы можете писать сообщения в Drupal для Firebug войти с функцией firep ():

firep($item, $optional_title)

Drupal 8

// Logs a notice
\Drupal::logger('my_module')->notice($message);
// Logs an error
\Drupal::logger('my_module')->error($message);

см. дополнительные примеры в Как регистрировать сообщения в Drupal 8.


Watchdog-это способ пойти на производственную систему, без сомнения, но во время отладки я нахожу полезное.

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

http://api.drupal.org/api/function/drupal_set_message/6


в drupal 7 мы можем зарегистрировать сообщение следующим способом:

функция Drupal watchdog мы можем использовать для регистрации сообщений в базе данных, убедитесь, что мы включили дополнительный основной модуль для регистрации базы данных в /admin/build/modules.

watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL)

$типа: Категория, к которой относится данное сообщение, пример: PHP, cron.., мы можем фильтровать сообщение по типу.

$сообщение : Сообщение для хранения в журнале, например: 'следующее модуль отсутствует в файловой системе: security_review'

$переменные : Массив переменных для замены в отображаемом сообщении или NULL, если сообщение уже переведено или невозможно перевести. чтобы сделать сообщение переведенным, не передавайте динамические значения переменные передачи в сообщении должны быть добавлены с помощью строк-заполнителей.

пример: watchdog ('cg_volunteer', 'cg in form_alter %formly', array ('%formly' => $form ['#id']), WATCHDOG_NOTICE, $link = NULL);

$тяжести Серьезность сообщения, журналы можно фильтровать по серьезности в соответствии с RFC 3164. Возможные значения: WATCHDOG_ERROR, WATCHDOG_WARNING и т. д. Подробнее см. В разделе https://api.drupal.org/api/drupal/includes!bootstrap.inc/function/watchdog/7.x

$link: Ссылка для связи с сообщением.

пример

// для уведомления

watchdog('my_module', $message, array());

/ / для ошибки входа

watchdog('my_module', $message, array(), WATCHDOG_ERROR);

в Drupal 8, мы использовали следующий метод:

/ / для журналов уведомления.

\Drupal::logger('my_module')->notice($message);

/ / для журналов ошибка.

\Drupal::logger('my_module')->error($message);

/ / для оповещения необходимо немедленно принять меры.

\Drupal::logger('my_module')->alert($message);

// для критического сообщения.

\Drupal::logger('my_module')->critical($message);

/ / для сообщений уровня отладки.

\Drupal::logger('my_module')->debug($message);

//для аварийной ситуации, система непригодный.

\Drupal::logger('my_module')->emergency($message);

//Предупреждение

\Drupal::logger('my_module')->warning($message);

//для информационных сообщений.

\Drupal::logger('my_module')->info($message);

также для перевода мы не должны использовать функцию t ().

\Drupal::logger('my_module')->alert('Message from @module: @message.', [
'@module' => $module,
'@message' => $message,
]);

это будет переведено во время выполнения.

пример :

\Drupal::logger('content_entity_example')->notice('@type: deleted %title.',
array(
'@type' => $this->entity->bundle(),
'%title' => $this->entity->label(),
));

и watchdog для D7&\Drupal::logger для D8 напишет log in watchdog таблица (в базе данных), и с огромные данные в журнале вы можете себе представить влияние на производительность.

можно использовать error_log функция php для этого (см. руководство по PHP).

error_log("Your message", 3, "/path/to/your/log/file.log");

вы должны иметь разрешение на запись в файл журнала (/path/to/your/log/file.log)

Друпал-8drupal phplog


// Get logger factory.
$logger = \Drupal::service('logger.factory');

// Log a message with dynamic variables.
$nodeType = 'Article';
$userName = 'Admin';
$logger->get($moduleName)->notice('A new "@nodeType" created by %userName.', [
    '@nodeType' => $nodeType,
    '%userName' => $userName,
]);

источник