Muster monolog

Monolog ist auf Packagist (Monolog/Monolog) verfügbar und als solches über Composer installierbar. Wenn Sie Monolog Standalone verwenden und nach einer einfachen Möglichkeit suchen, viele Handler zu konfigurieren, kann Ihnen theorchard/monolog-cascade helfen, komplexe Protokollierungskonfigurationen über PHP-Arrays, Yaml- oder json-Konfigurationen zu erstellen. Ich bezog mich auf die klassische Vierer-Bande-Definition des Dekoratormusters; In diesem Fall würde die Implementierung ungefähr wie folgt aussehen: Diese Implementierung zeigt, wie (in einer OO-Art) dieser Ansatz begrenzt sein kann, aber in einem guten Sinn: Das Muster macht deutlich, was mit einer Dekoration wie dieser gemacht werden sollte und was nicht. Hallo! Ich hüpfe auf [dies](seld.be/notes/the-road-to-monolog-2-0 said): Frage an @mnapoli : Das Dekoratormuster sollte nicht eine “Wrapping”-Technik anstelle einer Verkettung vorschreiben? Ich denke, dies ist die Grundlage der Von @stof Wenn ein Exception-Objekt in den Kontextdaten übergeben wird, muss es sich im “Ausnahme”-Schlüssel befindet. Das Protokollieren von Ausnahmen ist ein gängiges Muster, und dies ermöglicht es Implementierern, eine Stapelablaufverfolgung aus der Ausnahme zu extrahieren, wenn das Protokoll-Backend dies unterstützt. Implementierer MÜSSEN immer noch überprüfen, ob der “Ausnahme”-Schlüssel tatsächlich eine Ausnahme ist, bevor er als solche verwendet wird, da er irgendetwas enthalten kann. Ich erweitere dieses Thema, um eine mögliche Idee für eine Umgestaltung zu diskutieren: Haben Sie ein einziges Konzept von “Handler” (oder könnte auch “Logger” genannt werden), und stellen Sie die Nachricht als Objekt dar. Anstatt eine große “Kleber”-Klasse (Monolog-Logger) verwenden zu müssen, konnte alles mit dem Dekoratormuster zusammengesetzt werden. Hinweis: Wenn Sie einige Worker verwenden, vergessen Sie nicht, den Monolog-Dienst nach jeder (AMQP)-Nachricht zurückzusetzen: Ein Prozessor ist ein beliebiger PHP-Aufruf, der zur Verarbeitung der Protokollnachricht verwendet werden kann. Es kann dem Datensatz zusätzliche Daten hinzufügen. In Monolog ist es einfach, das Format der Protokolle anzupassen, die in Dateien, Sockets, E-Mails, Datenbanken und andere Handler geschrieben wurden. Die meisten Handler verwenden die Nachdem wir einige zusätzliche Felder zu unserem Protokoll hinzugefügt haben, durchläuft das Protokoll andere Transformationen, wenn Sie sich erinnern, dass wir eine Funktion hatten App-Dienste-Logs-LogHandler@getDefaultFormatter die eine Instanz von LogFormatter zurückgibt, dies ist der dritte wichtige Operator des Monologs. Es hat nur wenige Einbauten, die erweitert oder als Referenz für unsere verwendet werden können: .

Der letzte Prozessor UidProcessor ist wirklich wichtig für mich. Es ermöglicht, alle Protokolle für nur eine Nachricht zu gruppieren (HTTP-Anforderung oder AMQP-Nachricht). Andernfalls werden alle Protokolle miteinander vermischt. Lassen Sie uns ein wenig tiefer in das, was wir haben, bis zu diesem Punkt in der $recordargument: Wir fügen einen StreamHandler zum Logger mit pushHandler(). Der Handler schreibt Nachrichten in die angegebene Datei mit dem SCHWEREgrad DEBUG. Monolog unterstützt die von RFC 5424 beschriebenen Protokollierungsebenen. In diesem Schritt sind wir mit allem, was mit Monolog benutzerdefinierten Kanal verbunden getan. Wir können das formatierte Objekt einfach wie folgt speichern: . Jeder Handler verfügt auch über einen Formatter, eine Standardeinstellung mit Sinnvollen Einstellungen, wenn Sie keine festlegen.

Die Formatiertons normalisieren und formatieren eingehende Datensätze, sodass sie von den Handlern verwendet werden können, um nützliche Informationen auszugeben.