✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

PSR Logging Interface (und warum Logging wichtig ist)

9

Zwei Funktionen von PHP, von denen ich glaube, dass sie beim „Debuggen” oft überbeansprucht werden, sind die Verwendung von echo und var_dump. Ich habe darüber in einigen verschiedenen Artikeln zum Thema Debuggen gesprochen (wie hier und hier ).

Und so sehr ich ein Fan der Verwendung eines Debuggers bin, denke ich, dass es auch wichtig ist, eine Art Protokollierungssystem zu implementieren, damit Sie oder Ihr Kunde zurückgehen und die Aktivitäten innerhalb des Systems überprüfen können, wie sie oder ihre Benutzer es getan haben gewesen, wissen Sie, es zu benutzen.

Dies hat jedoch zwei Aspekte, insbesondere wenn Sie der PSR-Protokollierungsschnittstelle folgen möchten, und diese sind:

  1. die Regeln für die eigentliche Logging-Schnittstelle,
  2. ein Projekt, das die Protokollierungsschnittstelle richtig implementiert.

Warum also nicht beides in diesem Beitrag angehen?

Die PSR-Logging-Schnittstelle

Die PSR-Protokollierungsschnittstelle (oder PSR-3) deckt eine Reihe von Dingen ab, über die Sie auf der eigentlichen Seite ausführlicher lesen können.

Diese beinhalten:

  1. Die Grundlagen
  2. Mitteilungen
  3. Kontext
  4. Helferklassen
  5. Pakete
  6. Schnittstellen
  7. Protokollebenen
  8. Und mehr.

Aber für die Zwecke dieses Artikels möchte ich speziell über die Schnittstelle selbst sprechen, ein Projekt, das sie implementiert, und warum sie wichtig ist.

Die Logging-Oberfläche

Auf der Homepage der Dokumentation heißt es:

Dieses Dokument beschreibt eine gemeinsame Schnittstelle für Protokollierungsbibliotheken.

Das Hauptziel besteht darin, es Bibliotheken zu ermöglichen, ein PsrLogLoggerInterface-Objekt zu empfangen und auf einfache und universelle Weise Protokolle darauf zu schreiben.

Aus Sicht der Entwicklung ist das schön, oder? Ich meine, es bietet eine einzige, konsistente Möglichkeit, auf die wir setzen können, unabhängig davon, welche Protokollierungsbibliothek wir in unseren Projekten verwenden. Ich werde meine bevorzugte Bibliothek später in diesem Artikel behandeln.

Für diejenigen, die neu in der objektorientierten Programmierung sind oder einfach nur neugierig sind, welche Vorteile eine konsistente Schnittstelle uns bringt, stellen Sie sich das so vor: Unabhängig davon, welches System Sie wählen, haben Sie garantiert einen bestimmten Satz von Funktionen, Zuständen usw in Ihrer Anwendung verwenden können.

Letztendlich bietet das Hinzufügen eines Protokollierungssystems mit einem Standard, dem es folgen muss, eine Reihe von Vorteilen, unabhängig davon, welche Bibliothek Sie wählen (solange sie PSR-3 entspricht).

Versuchen Sie Monolog

Monolog ist mehr oder weniger das De-facto-Protokollierungsdienstprogramm für PHP-Anwendungen.

PSR Logging Interface (und warum Logging wichtig ist)

Es ist einfach, das Projekt über Composer hinzuzufügen, aber es enthält auch eine Vielzahl verschiedener Möglichkeiten, Daten auszugeben:

Monolog sendet Ihre Protokolle an Dateien, Sockets, Posteingänge, Datenbanken und verschiedene Webdienste. Siehe die vollständige Liste der Handler unten. Mit speziellen Handlern können Sie erweiterte Protokollierungsstrategien erstellen.

Persönlich habe ich es nur im Zusammenhang mit dem Senden von Ausgaben an Dateien verwendet. Die Möglichkeit, es an andere Systeme auszugeben (insbesondere Datenbanken, z. B. bei der Arbeit mit WordPress), ist jedoch schön. Natürlich wollen Sie diese Fähigkeit nicht missbrauchen.

Zweitens ist es wichtig zu erkennen, dass Sie den Logger zwar innerhalb einer Funktion oder einer anderen Klasse instanziieren können, es aber auch andere, objektorientiertere Möglichkeiten gibt, dies zu tun. PSR-3 deckt dies ab (wie oben erwähnt).

Kurz gesagt, Sie möchten sicherstellen, dass Ihre Klasse eine Instanz einer Klasse akzeptiert, die das LoggerInterface implementiert. Monolog implementiert diese Schnittstelle, das ist also kein Problem.

Was passiert außerdem, wenn Sie eine Gruppe verwandter Klassen haben, die alle die Protokollierung implementieren müssen?

  • Erben diese Klassen von einem gemeinsamen Elternteil?
  • Implementieren diese Klassen ein Merkmal? (Dies ist eine Option, die mir kürzlich ein Freund vorgestellt hat.)
  • Akzeptiert jede Klasse einfach die Abhängigkeit per Konstruktorinjektion?

Logger können auf verschiedene Weise zu einer Klasse hinzugefügt werden, und dies hängt davon ab, wie Ihr Projekt organisiert ist.

Mehr zur Protokollierung

In jedem Fall ist die Einführung der Anmeldung bei einer Anwendung aus verschiedenen Gründen wichtig, z. B. um Fehler beheben zu können, wenn sich etwas nicht wie erwartet verhält, sowohl in der Entwicklung als auch in der Bereitstellung und insbesondere in der Produktion.

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen