Как зарегистрировать сообщение об ошибке в 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-это способ пойти на производственную систему, без сомнения, но во время отладки я нахожу полезное.
Он выводит сообщение на экран, где обычно отображаются сообщения типа "операция успешно" (поэтому убедитесь, что вы удалите их, прежде чем сделать сайт живым).
в 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
)
// 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,
]);