PHP-Klasse ahLogger aktualisiert

Samstag, 15. Oktober, 2022

Ich habe mal diese Loggerklasse geschrieben, um in einer PHP-Anwendung Dinge während eines Client-Requests zu debuggen. Ich zeichne Meldungen auf, die mit einem Status (OK, Info, Warnung oder Fehler) versehen werden. Auch kann man übergabe-Parameter und sonstige Variablen dort reinblasen.
Eine Rendering Funktion zeichnet eine Tabelle mit allen Meldungen ans untere Ende der Webseite. Alles kein Hexenwerk.

Wenn man schon Meldungen einsammelt, dann wird auch ein Zeitstempel getrackt. Und wenn man Zeitstempel hat, dann kann man die Zeitdauer von einzelnen Aktionen messen und tracken: wie lange läuft eine Datenbank-Abfrage, ein Exec oder eine andere Aktion - das bekommt man gratis dazu: in einer Spalte der Ausgabetabelle wird das Delta zur letzten aufgezeichneten Meldung ausgegeben.

Ein Div rechts oben zeigt die Verarbeitunsdauer des Requests am Server an und kennzeichnet farblich, ob es eine Warnung oder einen Fehler gab. Man kann von hier auch direkt zu den Einträgen mit Warnung oder Fehler springen.

Mit überschaubarem Aufwand entstand ein hilfreiches Werkzeug zum Debuggen, Messen und Bottlenecks finden.

So wird es gemacht:

Nach dem Initialisieren wird mt der Methode add() beliebig oft je eine Meldung erfasst.

$oLog = new logger();

// Beispiel 1: hilfreiche Daten sichtbar machen
$oLog->add("INFO: all GET params: <pre>" . print_r($_GET,1) . "</pre>");
$oLog->add("INFO: all POST params: <pre>" . print_r($_POST,1) . "</pre>");

// Beispiel 2: Zeiten messen geht implizit - durch Schreiben einer neuen Logmeldung
$oLog->add("start db request");
$sSql='select id, label, description from mytable;';
// ... make your query
$oLog->add("sql query finished: " . $sSql);

Eine render() Methode gibt am Ende das Ergebnis aus.

// die Ausgabe ... aber natürlich nicht für jeden Seitenbesucher
if ($bDebugIsEnabled){
    echo $oLog->render();
}

Was ist neu?

  • Wenn ich bereits Zeiten mitschreibe, ist das Auslesen des Speicherverbrauchs fast ein Nobrainer. So sieht man, wo wärend der Aktionen eines Seitenaufrufs der Speicherverbrauch wie wächst.
  • Balken visualisiern nun den Speichrverbrauch und die gemessenen Zeiten.
  • Emoji Icons machen die Ausgabe etwas locker.

So sieht es aus:

2022-10-15-ahlogger-html-ouput.png

weiterführende Links:

  1. Docs: ahLogger
  2. Github: Sourccode