Entwickler, der außergewöhnliche CRM- und Laravel-Lösungen liefert

Als erfahrener Entwickler spezialisiere ich mich auf Laravel- und Vue.js-Entwicklung, die Implementierung von Vtiger CRM sowie auf vielfältige WordPress-Projekte. Meine Arbeit zeichnet sich durch kreative, dynamische und benutzerzentrierte Weblösungen aus, die individuell an die Bedürfnisse meiner Kunden angepasst werden.

In Vtiger CRM gibt es verschiedene Möglichkeiten, detaillierte Informationen über Vorgänge im System zu erhalten und diese entweder in eine Log-Datei zu schreiben oder direkt auf dem Bildschirm anzuzeigen.

Vtiger CRM – So zeigen Sie Systemmeldungen auf dem Bildschirm an

In Vtiger CRM gibt es verschiedene Möglichkeiten, detaillierte Informationen über Vorgänge im System zu erhalten und diese entweder in eine Log-Datei zu schreiben oder direkt auf dem Bildschirm anzuzeigen. Im Folgenden erhalten Sie eine Schritt-für-Schritt-Anleitung, wie Sie vorgehen können, um Systemmeldungen – inklusive Datenbankabfragen – sichtbar zu machen. Außerdem erfahren Sie, wie Sie die hilfreiche Tracy-Bibliothek integrieren, um Fehler schneller aufzuspüren, Logfiles zu erstellen, Variablen zu dumpen und die Ausführungszeit von Skripten zu messen.

  1. Aktivierung der LOG4PHP-Debug-Ausgabe

    Laut offizieller Dokumentation können Sie detaillierte Systemmeldungen einfach in eine Log-Datei schreiben, indem Sie folgende Schritte ausführen:

a) Öffnen Sie die Datei config.performance.php und ändern Sie die Debug-Einstellung, sodass die LOG4PHP-Bibliothek aktiviert wird. Ersetzen Sie dazu die entsprechende Zeile durch:

  'LOG4PHP_DEBUG' => true,

b) Öffnen Sie anschließend die Datei log4php.properties und passen Sie den Root-Logger an:

log4php.rootLogger = DEBUG, A1

Mit diesen Anpassungen wird das Log-Verzeichnis (logs) fortan mit den Systemmeldungen befüllt. Beachten Sie jedoch, dass in diesen Log-Dateien standardmäßig keine Meldungen zur Datenbank (SQL-Abfragen) enthalten sind.

Ausgabe von Datenbankmeldungen auf dem Bildschirm

Um auch Abfragen an die Datenbank sichtbar zu machen, müssen Sie das Verhalten der Datenbankklasse anpassen. Öffnen Sie dafür die Datei include/database/PearDatabase.

Am Ende dieser Datei finden Sie einen Block, der ungefähr so aussieht:   

if(empty($adb)) {
    $adb = new PearDatabase();
    $adb->connect();
  }

Fügen Sie in diesen Block unmittelbar nach dem Verbindungsaufbau die folgende Zeile ein:

  $adb->setDebug(true);

Somit wird bei jedem Laden einer Seite, auf der Datenbankabfragen ausgeführt werden, die Debug-Ausgabe aktiviert und alle durchgeführten SQL-Abfragen direkt auf dem Bildschirm ausgegeben.

  1. Integration der Tracy-Bibliothek für Entwickler

    Falls Sie noch ausführlichere Debug-Informationen benötigen – wie das schnelle Auffinden von Fehlern, das Erfassen von Log-Informationen, das Dumpen von Variablen oder das Messen von Skriptausführungszeiten – können Sie die Tracy-Bibliothek verwenden. Folgen Sie dazu diesen Schritten:

a) Laden Sie die Tracy-Bibliothek von GitHub herunter:
  https://github.com/nette/tracy/releases
b) Entpacken Sie den gesamten Inhalt in den Ordner include.

c) Bearbeiten Sie anschließend die Datei libraries/HTTP_Session/Session.php. In der Funktion start müssen Sie Anpassungen vornehmen. Das ursprüngliche Codefragment:

  function start($name = 'SessionID', $id = null)
  {
    HTTP_Session::name($name);
    if ($id) {
      HTTP_Session::id($id);
    } elseif (is_null(HTTP_Session::detectID())) {
      HTTP_Session::id($id ? $id : uniqid(dechex(rand())));
    }
    session_start();
    if (!isset($_SESSION['__HTTP_Session_Info'])) {
      $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_STARTED;
    } else {
      $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_CONTINUED;
    }
  }

wird wie folgt erweitert:

  function start($name = 'SessionID', $id = null)
  {
    HTTP_Session::name($name);
    if ($id) {
      HTTP_Session::id($id);
    } elseif (is_null(HTTP_Session::detectID())) {
      HTTP_Session::id($id ? $id : uniqid(dechex(rand())));
    }
    //----------- START TRACY IMPLEMENTATION -----------
    $sessionid = session_id();
    if(empty($sessionid)) {
      session_start();
    }
    //----------- END TRACY IMPLEMENTATION -----------
    if (!isset($_SESSION['__HTTP_Session_Info'])) {
      $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_STARTED;
    } else {
      $_SESSION['__HTTP_Session_Info'] = HTTP_SESSION_CONTINUED;
    }
  }

d) Nehmen Sie als Nächstes Änderungen in der Datei index.php vor. Ersetzen Sie den ursprünglichen Codeblock, der unter anderem die Module und das Web-UI einbindet, durch den angepassten Code. Fügen Sie vor dem Aufruf von Vtiger_WebUI() folgenden Code ein, der Tracy initialisiert:
  session_start();
  $session_tracy = false;
  if(isset($_REQUEST['tracy'])){
    if($_REQUEST['tracy'] == 'start') {
      $_SESSION['its4you_tracy'] = true;
    } else {
      unset($_SESSION['its4you_tracy']);
    }
  }
  if(isset($_REQUEST['tracylog'])){
    if($_REQUEST['tracylog'] == 'start') {
      $_SESSION['its4you_tracylog'] = true;
    } else {
      unset($_SESSION['its4you_tracylog']);
    }
  }
  include_once 'include/tracy/src/tracy.php';
  use Tracy\Debugger;
  $tracy_mode = Debugger::PRODUCTION;
  if(isset($_SESSION['its4you_tracy'])){
    $tracy_mode = Debugger::DEVELOPMENT;
  }
  $tracylog_dir = null;
  if(isset($_SESSION['its4you_tracylog'])){
    $rootDirectory = vglobal('root_directory');
    $tracylog_dir = $rootDirectory.'logs/';
  }
  Debugger::$logSeverity = E_NOTICE | E_WARNING;
  Debugger::enable($tracy_mode, $tracylog_dir);

Anschließend rufen Sie wie gewohnt das WebUI auf:
  $webUI = new Vtiger_WebUI();
  $webUI->process(new Vtiger_Request($_REQUEST, $_REQUEST));

e) Achten Sie darauf, dass der Ordner logs beschreibbar ist, damit Tracy Fehler und Ausgaben in die entsprechenden Logdateien (error.log, exceptions.log) schreiben kann.

  1. Nutzung und Schalter zur Modusumschaltung
    Nachdem die oben genannten Anpassungen vorgenommen wurden, können Sie den Debug-Modus flexibel steuern:

– Um den Debugger-Modus (mit detaillierter Fehlersuche) zu aktivieren, fügen Sie der URL ?tracy=start hinzu (z. B. index.php?tracy=start).
– Zum Deaktivieren geben Sie ?tracy=stop in der URL an.
– Um zusätzlich den Fehlerprotokollierungsmodus zu aktivieren, verwenden Sie ?tracylog=start (und ?tracylog=stop zum Deaktivieren).

Wenn aktiv, werden alle Systemmeldungen gemäß den Einstellungen in den Logdateien error.log bzw. exceptions.log im logs-Verzeichnis abgelegt.

Fazit

Durch die Kombination der Aktivierung von LOG4PHP und der Ergänzung der Datenbank-Debug-Ausgabe erhalten Sie umfassende Einblicke in die Vorgänge Ihrer Vtiger CRM-Installation. Mit der zusätzlichen Integration der Tracy-Bibliothek steht Ihnen ein mächtiges Werkzeug zur Verfügung, um Fehler schnell zu identifizieren, Variablen zu analysieren und die Performance Ihrer Seite zu messen. Diese Maßnahmen helfen nicht nur bei der Fehlersuche, sondern tragen auch zu einer optimierten Weiterentwicklung und Stabilität Ihres CRM-Systems bei.

Mit diesen Erweiterungen sind Sie in der Lage, Systemereignisse und Datenbankabfragen sowohl in Logdateien als auch direkt auf dem Bildschirm anzuzeigen – ein essenzieller Schritt für Entwickler, die tiefere Einblicke in die Funktionsweise von Vtiger CRM gewinnen möchten.