Как пройти через сторожевой стол Друпала?


Я хочу получить все сообщения об ошибках из таблицы watchdog, но когда я получаю столбец сообщения из таблицы, он имеет %path, %function,!сообщение что-то вроде этого сообщения как я могу принять все реальное сообщение с не этими сигналами?

<?php
  // Begin building the query.
  $query = db_select('watchdog', 'th')
    ->extend('PagerDefault')
    ->orderBy('wid')
    ->distinct()
    ->fields('th', array('variables', 'type', 'severity', 'message'))
    ->limit(2000);


  // Fetch the result set.
  $result = $query  -> execute();


  // Loop through each item and add to $row
  foreach ($result as $row) {
    blablabla($row);
  }

function blablabla($row) {   
  $severity = $row -> severity;
  $type = $row -> type;
  $message = $row -> message;
?>

Когда я использую $message, он показывает мне что-то вроде:

%type: !message in %function (line %line of %file)...

Keep in %path:

%type: !message in %function (line %line of %file)...

Начало перечисления файлов в %directory.

Как я могу исправить эту вещь? Могу ли я использовать API ошибок и как я могу это сделать?

2 2

2 ответа:

Посмотрите на код ниже:

if (isset($row->message) && isset($row->variables)){
        if ($row->variables === 'N;')
          $dbmessage = $row->message;
        else $dbmessage = t($row->message, unserialize($row->variables));
          $dbmessage = filter_xss($dbmessage, array());
     }

Это должно помочь вам начать

blablabla($row) {
    $variables = unserialize($row->variables); // un serialize variables
    $message = t($row->message, array(
        'type'    => $row->type,
        'severity'=> $row->severity,
        // replace the rest of the variables
    ));

Также проверьте это. Вот как drupal читает из таблицы watchdog:

  • dblog_overview; это функция, которая отображает эту страницу admin/reports/dblog
  • dblog_event; это функция, которая отображает одну запись dblog внутри этой страницы admin/reports/event/ID.