it-swarm.com.de

Wie protokolliert man eine Fehlermeldung in drupal

So protokollieren Sie unsere eigene Fehlernachrichten (z. B. Fehler aufgrund ungültiger Datumseinträge des Benutzers), die im php - Programm in Drupal-Fehlerprotokoll generiert werden.

33
ArK

Sie können die watchdog-Funktion verwenden:

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

Das Handbuch zitierend, sind die Parameter:

  • $type Die Kategorie, zu der diese Nachricht gehört.
  • $message Die Nachricht, die im Protokoll gespeichert werden soll.
  • $variables Ein Array von Variablen, die in der angezeigten Nachricht ersetzt werden sollen, oder NULL, wenn die Nachricht bereits übersetzt wurde oder nicht übersetzt werden kann.
  • $severity Der Schweregrad der Nachricht gemäß RFC 3164
  • $link Eine Verknüpfung, die der Nachricht zugeordnet werden soll.

Die Fehlerstufen finden Sie auf der Seite von watchdog_severity_levels . Für einen Fehler verwenden Sie höchstwahrscheinlich WATCHDOG_ERROR oder vielleicht sogar etwas "kritischer", abhängig von der Art des Fehlers.

46
Pascal MARTIN

Drupal 8

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

Weitere Beispiele finden Sie unter So protokollieren Sie Nachrichten in Drupal 8 .

7
milkovsky

1) In der Tat ist Watchdog eine Standardmethode, um eigene PHP Fehler aufzuzeichnen.

2) Wenn Sie beim Debuggen Ihrer Drupal-Seiten sofort Fehlermeldungen anzeigen möchten, möchten Sie diese möglicherweise auf der zugehörigen Seite (in der FireBug-Konsole) protokolliert/gedruckt anzeigen. Manchmal ist dies sehr praktisch, wenn Sie die Seite sehen Just-in-Time-Protokolle . Dies erfordert - Devel module, Firebug Erweiterung für FireFox und möglicherweise Firephp

Sie können die Funktion dfb () verwenden, um Protokollmeldungen direkt in die allgemeine Firebug-Konsole zu schreiben.

dfb($input, $label = NULL)

Wenn Sie Ihre Drupal-bezogenen Protokollnachrichten von der normalen Firebug-Konsole fernhalten möchten, können Sie Nachrichten mit der firep () - Funktion in das Drupal for Firebug log schreiben:

firep($item, $optional_title)
6
AlexA

Watchdog ist zweifellos der Weg für ein Produktionssystem, aber beim Debuggen finde ich die drupal_set_message-Funktion nützlich. 

Die Nachricht wird auf dem Bildschirm ausgegeben, auf dem normalerweise die Meldungen des Typs "Operation erfolgreich" angezeigt werden (stellen Sie daher sicher, dass Sie sie entfernen, bevor Sie die Site live schalten).

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

3
DilbertDave

In drupal 7 können wir die Nachricht auf folgende Weise protokollieren:

mit der Drupal-Watchdog-Funktion können Sie Nachrichten in der Datenbank protokollieren. Stellen Sie sicher, dass das optionale Kernmodul für die Datenbankprotokollierung unter/admin/build/modules aktiviert ist.

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

$ type: Die Kategorie, zu der diese Nachricht gehört. Beispiel: PHP, cron .., wir können die Nachricht nach Typ filtern.

$ message: Die Nachricht, die im Protokoll gespeichert werden soll. Beispiel: 'Das folgende Modul fehlt im Dateisystem: security_review'

$ variables: Array von Variablen, die in der angezeigten Nachricht ersetzt werden sollen, oder NULL, wenn die Nachricht bereits übersetzt wurde oder nicht übersetzt werden kann . Um die Nachricht zu übersetzen, übergeben Sie keine dynamischen Werte in der Variablen Die Nachricht sollte mithilfe von Platzhalterzeichenfolgen hinzugefügt werden.

Beispiel: Watchdog ('cg_volunteer', 'cg in form_alter% formly', array ('% formly' => $ form ['id']), WATCHDOG_NOTICE, $ link = NULL);

$ severity Der Schweregrad der Nachricht, Protokolle können nach RFC 3164 nach Schweregrad gefiltert werden. Mögliche Werte sind WATCHDOG_ERROR, WATCHDOG_WARNING usw. usw .. __ Weitere Beispiele finden Sie unter https: // api drupal.org/api/drupal/includes!bootstrap.inc/function/watchdog/7.x

$ link: Ein Link, der der Nachricht zugeordnet werden soll.

Beispiel 

// für Protokollnotizen

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

// für Protokollierungsfehler

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

In Drupal 8 haben wir folgende Methode verwendet:

// Für Logs ein Hinweis.

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

// Für Logs einen Fehler.

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

// Für Alert muss die Aktion sofort ausgeführt werden.

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

// Für eine kritische Nachricht.

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

// Für Nachrichten auf Debug-Ebene.

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

// Das System ist für den Notfall unbrauchbar.

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

// Zur Warnung

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

// Für Informationsnachrichten.

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

Auch für das Übersetzen sollten wir die Funktion t() nicht verwenden.

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

dies wird zur Laufzeit übersetzt.

Beispiel:

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

Sowohl watchdog für D7 als auch \Drupal::logger für D8 schreiben ein Protokoll in die watchdog-Tabelle (in Ihrer Datenbank). Mit HUGE-Daten können Sie sich die Auswirkungen auf die Leistung vorstellen.

Sie können dazu die Funktion error_log php verwenden (siehe PHP manual ).

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

Sie benötigen die Berechtigung zum Schreiben in Ihre Protokolldatei (/path/to/your/log/file.log)

drupal-8drupalphplog

1
kaay
// 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,
]);

Quelle

0
Santo Boldižar