suchen
HeimBackend-EntwicklungPHP-TutorialProtokollierungssystem im PHP-Framework

 

Ich arbeite derzeit als PHP-Back-End-Entwickler und Programmierer in einem Unternehmen (unser Team hat kein Front-End, daher werden wir bei unseren Aktivitäten Front-End-Sachen übernehmen). Ich habe zwei Wochen gebraucht, um ein Front-End- und Back-End-Programm aufzubauen (ich erinnere mich, dass ich das damals nicht machen konnte und am Wochenende zwei Tage lang Überstunden machen musste). Es ist jetzt mehr als 4 Monate her, dass ich eine nicht sehr komplizierte Aktivität an einem Nachmittag erledigen kann. Natürlich werde ich dabei viele Dinge berücksichtigen, wie z. B. Skalierbarkeit und Wiederverwendbarkeit, denn wenn Sie mehr tun, werden Sie es tun Sammeln Sie viele Dinge, die kleinen Plug-Ins ähneln, sodass es schneller ist. . . . . . Aber ich fand, dass es sehr schlecht ist, den ganzen Tag in den Anforderungen zu stehen und die Anforderungen zu erfüllen. Auf diese Weise lerne ich keine System- und Framework-Dinge, weil ich in trivialen Anforderungen gefangen bin und keine Zeit habe, einige wichtige Teile davon zu erledigen Das Framework, und wenn Ihre Kollegen und Ihr Chef daran gewöhnt sind, dass Sie diese Dinge tun, werden sie es Ihnen ohne zu zögern jedes Mal vorschieben, wenn sie auf etwas stoßen, das keinen technischen Inhalt hat, aber erledigt werden muss (um egoistisch zu sein, sind alle Programmierer). Wie ich wollen sie alle etwas mit technischem Inhalt beherrschen, damit sie als Programmierer stolz sein können, und mit der Zeit wird man sich daran gewöhnen ... Das ist wirklich miserabel, also werde ich es rausnehmen Nehmen Sie sich etwas Zeit, um die Dinge im Framework zu lernen, und versuchen Sie, kein einfacher Programmierer zu sein.

Einführung

Freunde, die mit dem PHP-Framework vertraut sind, kennen möglicherweise die wichtige Rolle von Protokollen im Projekt. Es kann uns helfen, den Fehlerort zu lokalisieren und das Programm benutzerfreundlicher zu gestalten (bei richtiger Handhabung wird es nicht direkt ausgelöst). a big Der Heap ist ein englisches Wort, das nur Programmierer wirklich verwenden können. Es ist auch beim Debuggen sehr praktisch. Es kann auch einige wichtige Vorgänge usw. aufzeichnen. Kurz gesagt, wenn ein vollständiges Projekt kein Protokollsystem hat Die Entwicklungsstraße wird voller Dornen sein. Es gibt Schlaglöcher und es wird definitiv stolpern.

Einführung

Um das PHP-Protokollierungssystem zu beherrschen, müssen Sie zunächst ein gründliches Verständnis dieser Dinge haben.

1. Mehrere Funktionen von PHP

1 set_Exception_handler(callback $Exception_handler); //Ausnahme Erfassen Sie die Registrierung benutzerdefinierter Handlerfunktionen

1 set_error_handler(callback $error_handler); //Fehler Erfassen Sie die Registrierung benutzerdefinierter Handlerfunktionen

1 register_shutdown_function(callback $callback); //program Ungewöhnliche Registrierung der Beendigungsfehlererfassungs-Handlerfunktion während der Ausführung

Diese drei Funktionen bieten Entwicklern viel Autonomie bei der Fehlerbehandlungskontrolle und sind für die Aufzeichnung von Protokollinformationen im Protokollierungssystem verantwortlich.

Wenn im Programm eine Ausnahme auftritt, löst der PHP-Kernel einen Ausnahmefehler aus und gibt dann die Fehlermeldung an den Benutzer aus. Wenn die Ausnahmebehandlungsfunktion registriert ist, wird die von PHP ausgelöste Ausnahme an sich selbst weitergeleitet Die definierte registrierte Ausnahmeabfangfunktion enthält die von uns durchzuführende Verarbeitung und zeichnet die Fehlerinformationen auf (einschließlich Fehlerdetails und Fehlerort). Nachdem die Funktion die Ausnahme behandelt hat, wird die Ausnahme beendet.

Wenn im Programm ein Fehler auftritt, wandelt die von uns registrierte Fehlerbehandlungsfunktion die Fehlerinformationen in ein Fehlerausnahmeobjekt um und übergibt sie an die Ausnahmebehandlungsfunktion, bei der es sich im ersten Schritt um die Funktion $Exception_handler handelt.

Wenn während der Wiederaufnahme ein Fehler beim Herunterfahren auftritt, wird die von uns registrierte Funktion zur Verarbeitung abnormaler Beendigung ausgeführt. Diese Funktion ruft das Fehlerobjekt des letzten Herunterfahrens über error_get_last() ab und generiert dann einen Fehler wie im vorherigen Teil . Ausnahmeobjekt, übergeben Sie dieses Objekt an unsere registrierte Ausnahmebehandlungsfunktion.

Wie Sie sehen können, wandelt es unabhängig davon, ob es sich um eine Ausnahme oder einen Fehler handelt, seine eigenen Informationen in die von der Ausnahmebehandlungsfunktion erkannten Ausnahmeinformationen um und übergibt sie dann zur Verarbeitung an die Ausnahmebehandlungsfunktion . Die Nicht-Ausnahme-Informationen sind wie Make-up. Der Ausnahme-Handler erkennt diese Nicht-Ausnahme-Informationen nur durch Entfernen der Nicht-Ausnahme-Informationen (um genau zu sein). es sollte ausgelöst werden), wird der Ausnahmebehandler es erkennen.

Fehlerbehandlungsprozess im PHP-Protokollsystem

Diese Funktionen funktionieren normalerweise mit einer Ausnahmebehandlungsbibliothek und einer Fehlerprotokollierungsbibliothek. Die Protokollierungsklassenbibliothek wird in $Exception_handler aufgerufen Platzieren Sie Protokolldateien sinnvoll. Die oben genannten Funktionen werden im Allgemeinen wie folgt am Eingang des Programmframeworks geladen und registriert:

Hier wird die Array-Methode (Klasse, Funktion) verwendet.

<span>1</span> <span>set_exception_handler</span>(<span>array</span>("Myexception","exceptionHandler"<span>));
</span><span>2</span> <span>set_error_handler</span>(<span>array</span>("Myexception","errorHandler"<span>));
</span><span>3</span> <span>register_shutdown_function</span>(<span>array</span>("Myexception","shutdownHandler"));

2. Protokollierungsbezogene Bibliotheken

Die im ersten Teil eingeführten Dinge erfassen nur Ausnahmen, Fehler und Abschaltungen. Dies ist nur der erste Schritt. Als nächstes müssen die erfassten Informationen angemessen verarbeitet werden, z lokales Dateisystem (dieser Vorgang befindet sich im Array („MyException“, „ExceptionHandler“)), in dem die Protokollierungsklassenbibliothek verwendet wird. (Die unten erwähnte Klassenbibliothek basiert auf dem Design des Kohana-Protokollsystems.)

Die Protokollierung im japanischen Stil ist ebenfalls sehr einfach. Sie müssen die Informationen lediglich am Ende der Datei hinzufügen, aber ich glaube, dass dies jeder selbst implementieren kann Es ist notwendig, eine praktische und effiziente Lösung zu entwerfen. Die erweiterte Protokollierungsklassenbibliothek ist nicht so einfach. Sie muss nach langer Übung zusammengefasst und optimiert werden. Die Protokollierungsklassenbibliothek im Kohana-Framework ist relativ ausgereift, sodass wir sie verwenden können es hier als Referenz.

Ich glaube, dass Benutzer, die Kohana verwendet haben, mit der Protokollierung im Kohana-Framework vertraut sein müssen. Wenn Sie nicht vertraut sind, werde ich kurz auf die Anwendung/bootstrap.php eingehen Datei im Kohana-Quellcode. Sie können den folgenden Code in den Zeilen 109-112 sehen:

<span>109</span> <span>/*</span><span>*
</span><span>110</span> <span> * Attach the file write to logging. Multiple writers are supported.
</span><span>111</span>  <span>*/</span>
<span>112</span> Kohana::<span>$log</span>->attach(<span>new</span> Log_File(APPPATH.'logs'));

Hiermit wird ein Protokollobjekt zum Protokollobjekt hinzugefügt Es handelt sich um unterschiedliche Klassenbibliotheksinstanzen in Kohana Das Protokollierungsobjekt ist in zwei Teile unterteilt. Es dient zur Verwaltung einer Protokollierungsobjektliste. Es ist eigentlich wie ein Container, der ein oder mehrere Protokollierungsobjekte enthält Im zweiten Teil werden diese Protokollierungsobjekte tatsächlich zum Aufzeichnen von Protokollen verwendet. Außerdem gibt es eine Reihe von Fehlerstufen, die für jedes Objekt aufgezeichnet werden müssen. Sie werden nur aufgezeichnet, wenn die Fehlerstufe erreicht ist, und werden weggelassen, wenn dies nicht der Fall ist. Das Folgende ist meine eigene vereinfachte Protokollierungsmethode nach dem Umbenennen:

<span>1</span> self::<span>$log</span> = <span>Log</span>::<span>instance();
</span><span>2</span> self::<span>$log</span>->attach(<span>new</span> Logwriter("./data/debug"),<span>Log</span>::<span>DEBUG);
</span><span>3</span> self::<span>$log</span>->attach(<span>new</span> Logwriter("./data/notice"),<span>Log</span>::NOTICE);

Zum besseren Verständnis habe ich den „Container“ als „Log“ und die aufgezeichnete Instanz als „Logwriter“ bezeichnet. Sie können sehen, dass ich am Programmeingang leicht zwei verschiedene Protokolltypen hinzugefügt habe. Der erste ist „Alle Fehler mit Fehler aufzeichnen“. Zahlen kleiner als Log::DEBUG (Fehlerstufe höher als er) und gemäß den Regeln im Ordner ./data/debug aufzeichnen. Die zweite Möglichkeit besteht darin, Fehler mit einer Stufe gleich oder höher als Log::NOTICE aufzuzeichnen Natürlich können Sie auch detaillierter angeben, welche Fehler gut sind. Dies ist meiner Meinung nach praktisch und schnell. Wir können Fehlerprotokolle hinzufügen und sie entsprechend unseren Anforderungen aufteilen Schauen Sie sich das Bild unten an. Es wird zum Verständnis beitragen:

Die Beziehung zwischen Protokoll und Protokollschreiber

Auf dem Bild oben sehen Sie, dass es sich bei Log um einen Container handelt, der bestimmte unterschiedliche Logwriter-Objekte enthält. Wenn die Fehlerinformationen in die Datei geschrieben werden sollen, wird ein Logwriter ausgeführt Instanz, um zu sehen, ob Sie den Fehler in der Fehlermeldung aufzeichnen möchten. Wenn die Ebene in der Fehlermeldung nicht im Logwriter enthalten ist, wird sie ignoriert.

Wie funktioniert dieser Teil mit dem ersten Teil? Tatsächlich ist es sehr einfach, eine Ausnahme aufzurufen, um eine Fehlermeldung (einschließlich Fehlerort, Fehlercode, Fehlermeldung usw.) zum Fehlernachrichtenarray im Protokollcontainer hinzuzufügen Schreiben Sie diese Informationen nach dem Ende des Programms in die Datei. Bitte beachten Sie, dass beim Lesen des Kohana-Codes möglicherweise kein offensichtliches direktes Schreiben in das Protokoll erfolgt, da mehrere Fehler gleichzeitig auftreten können Wenn ein Fehler auftritt, zeichnen Sie ihn einfach einmal auf, was zusätzliche E/A und Zeit in Anspruch nimmt, bevor das Programm zurückkehrt. Daher besteht Kohanas Ansatz darin, alle Fehler, Ausnahmen und Protokolle standardmäßig in Log::$errormessage zu speichern. und sprechen Sie über das Protokoll, wenn Sie es instanziieren. Die Funktion dieser Funktion besteht darin, sie auszuführen, nachdem das Programm abnormal beendet wurde oder die Ausführung abgeschlossen ist Der Protokolldatensatz hat keinen großen Einfluss auf die Ausführung dieses PHP.

3. Beispielzusammenfassung

An dieser Stelle sollten Sie einen Überblick über das Protokollsystem haben, und Sie können bereits ein „Protokollsystem“ zur Verwendung schreiben. Dies ist die Github-Adresse, die das enthält Code und sehen Sie sich bei Bedarf Beispiele an.

https://github.com/AizuYan/phplog.git

Das Urheberrecht dieses Artikels liegt beim Autor (luluyrt@163.com) und dem Blogpark. Nach dem Nachdruck des Artikels ist der Autor und der Originaltextlink verboten müssen an einer gut sichtbaren Stelle auf der Artikelseite angegeben werden, andernfalls behalten wir uns eine rechtliche Haftung vor.

Das Obige hat das Protokollierungssystem in das PHP-Framework eingeführt, einschließlich seiner Aspekte. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
PHP und Python: Verschiedene Paradigmen erklärtPHP und Python: Verschiedene Paradigmen erklärtApr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

PHP und Python: Ein tiefes Eintauchen in ihre GeschichtePHP und Python: Ein tiefes Eintauchen in ihre GeschichteApr 18, 2025 am 12:25 AM

PHP entstand 1994 und wurde von Rasmuslerdorf entwickelt. Es wurde ursprünglich verwendet, um Website-Besucher zu verfolgen und sich nach und nach zu einer serverseitigen Skriptsprache entwickelt und in der Webentwicklung häufig verwendet. Python wurde Ende der 1980er Jahre von Guidovan Rossum entwickelt und erstmals 1991 veröffentlicht. Es betont die Lesbarkeit und Einfachheit der Code und ist für wissenschaftliche Computer, Datenanalysen und andere Bereiche geeignet.

Wählen Sie zwischen PHP und Python: Ein LeitfadenWählen Sie zwischen PHP und Python: Ein LeitfadenApr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP und Frameworks: Modernisierung der SprachePHP und Frameworks: Modernisierung der SpracheApr 18, 2025 am 12:14 AM

PHP bleibt im Modernisierungsprozess wichtig, da es eine große Anzahl von Websites und Anwendungen unterstützt und sich den Entwicklungsbedürfnissen durch Frameworks anpasst. 1.PHP7 verbessert die Leistung und führt neue Funktionen ein. 2. Moderne Frameworks wie Laravel, Symfony und Codesigniter vereinfachen die Entwicklung und verbessern die Codequalität. 3.. Leistungsoptimierung und Best Practices verbessern die Anwendungseffizienz weiter.

Auswirkungen von PHP: Webentwicklung und darüber hinausAuswirkungen von PHP: Webentwicklung und darüber hinausApr 18, 2025 am 12:10 AM

PhPhas significantantyPactedWebDevelopmentAndendendsbeyondit.1) iTpowersMAjorPlatforms-LikewordpressandExcelsInDatabaseInteractions.2) php'SadaptabilityAllowStoscaleForLargeApplicationsfraMe-Linien-Linien-Linien-Linienkripte

Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Wie funktioniert der Php -Typ -Hinweis, einschließlich Skalartypen, Rückgabetypen, Gewerkschaftstypen und nullbaren Typen?Apr 17, 2025 am 12:25 AM

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Wie handelt es sich bei PHP -Objektklonen (Klonschlüsselwort) und der __clone Magic -Methode?Wie handelt es sich bei PHP -Objektklonen (Klonschlüsselwort) und der __clone Magic -Methode?Apr 17, 2025 am 12:24 AM

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP vs. Python: Anwendungsfälle und AnwendungenPHP vs. Python: Anwendungsfälle und AnwendungenApr 17, 2025 am 12:23 AM

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools