Die im Drupal-Core enthaltene Logging-Funktion kann von Haus aus einfache Datentypen wie Strings oder Integer ausgeben. Manchmal ist es aber nötig Arrays oder Objekte in den Log zu schreiben, um Aufschlüsse über das Laufzeitverhalten zu bekommen. Besonders in Fällen wo keine vollständige Entwicklungsumgebung inkl. XDebug und/oder dem Devel Modul verfügbar ist. Ein möglicher Use-Case wäre wenn im Livebetrieb einer Drupalcommerce-Installation ein Zahlungsmodul überwacht und untersucht werden soll (z.B. Paypal-Transaktionen).

Datenbank Logging einschalten

  • Datenbank-Logging einschalten unter Administration >> Konfiguration >> Protokollierung und Fehler (admin/config/development/logging)
  • Option Anzuzeigende Fehlermeldungen auf Alle Fehlermeldungen setzen und speichern
  • Log-Einträge sind dann unter Administration >> Berichte >> Aktuelle Protokollnachrichten (admin/reports/dblog)

Mittels watchdog() können out-of-the-box bereits Strings und einfache Datentypen in den Datenbank-Log geschrieben werden.

Logging von Strings und einfachen Datentypen:

watchdog("Mein Modul", "Inhalt der Variable: %stringdebug", array('%stringdebug' => $string));

Mit Hilfe von print_r() können auch Arrays oder Objekte geloggt werden. Es bietet sich folgendes Konstrukt an:

watchdog("Mein Modul", "Inhalt des Arrays: %arraydebug", array( '%arraydebug' =>'<pre>' . print_r( $array, true) . '</pre>'));

Sollte der Logeintrag aufgrund der Größe des Arrays/Objekts mühsam zu lesen sein, kann das Array/Objekt per Copy & Paste aus dem Logeintrag z.B. in einen Array-Beautifier kopiert und lesbar ausgegeben werden.