Красивая запись в watchdog

Опубликовал Максим Баев, 11 мая 2016, 15:53

Когда пишется кастомный модуль, то обычно существует обработка ошибок с помощью watchdog или watchdog_exception. Стандартный вывод такого сообщения выглядит не информативно и мало-симпатично. Следующий пример обработки ошибки можно встретить достаточно часто:

<?php
try {
  throw new Exception('Any message', 10);
}
catch (Exception $e) {
  watchdog_exception('my_module', $e);
}

Он сохранит сообщение об ошибке в лог, которое будет выглядеть так (сорри за заблюренные данные, скрины сделаны с рабочего сайта =) ):
default-watchdog

Чтобы исправить этот недостаток можно использовать сниппет:

<?php
function my_module_pretty_watchdog($e, $params = array()) {
  $message = "<b>Message</b>: !message<br/>" .
    "<b>Trace</b>: !trace<br/>" .
    '<b>Params</b>: !params';

  $trace = explode('#5', nl2br($e->getTraceAsString()));
  watchdog('my_module', $message, array(
    '!message' => $e->getMessage(),
    '!trace'   => str_replace('#', '&emsp; #', $trace[0]),
    '!params'  => '<pre>'.htmlspecialchars(print_r($params, TRUE)).'</pre>'
  ), WATCHDOG_ERROR, current_path());
}

В таком случае, тот же пример, с сохранением ошибки в лог:

<?php
try {
  throw new Exception('Any message', 10);
}
catch (Exception $e) {
  my_module_pretty_watchdog($e, array(
    'first param' => 'data 1',
    'second param' => 'data 2'
  ));
}

даст более привлекательное сообщение:
custom-watchdog

Другие посты