Bei der täglichen PHP -Entwicklung und -betrieb und -wartung ist die Verwaltung von Fehlerprotokollen eine entscheidende Aufgabe. Es hilft Entwicklern nicht nur, Probleme zu lokalisieren, sondern fordert auch so schnell wie möglich einen Alarm auf, wenn eine Anomalie im System auftritt. Die Fehlerprotokollierungsmechanismen von Syslog und PHP sind zwei häufige Protokollierungsmethoden. Es gibt offensichtliche Unterschiede in ihren Konfigurationsmethoden, anwendbaren Szenarien und Managementstrategien. In diesem Artikel wird die beiden vergleichen und praktische Vorschläge für die effiziente Verwaltung von Protokollen abgeben.
PHP -Fehlerprotokolle werden normalerweise über die Php.ini -Datei konfiguriert. Zu den wichtigsten Konfigurationselementen gehören:
ERROR_REPORTING : Legt fest, welche Fehlerniveaus gemeldet werden müssen.
LOG_ERRORS : Ob Sie Fehler auf Protokolldateien protokollieren sollen.
ERROR_LOG : Geben Sie den Pfad der Protokolldatei an.
Beispielsweise finden Sie hier ein typischer Konfigurationscode:
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
Diese Methode ist einfach und intuitiv, geeignet für kleine und mittelgroße Anwendungen, und Protokolle werden direkt in das Dateisystem geschrieben, um das Anzeigen und Analyse einfach zu sehen. Aber seine Einschränkungen sind:
Die Protokolle sind lokal über Server verstreut, was dem zentralisierten Management nicht förderlich ist.
Auditing mit Systemprotokollrichtlinien nicht vereinen.
Das Dateiwachstum ist unkontrollierbar, was dazu führen kann, dass der Speicherplatz erschöpft ist.
Syslog ist ein universeller Protokollverwaltungsdienst für UNIX -Systeme. Es ermöglicht Protokollinformationen, die zentral an lokale oder entfernte Syslog -Daemons gesendet werden und gemäß den Regeln klassifiziert, weitergeleitet und gespeichert werden.
In PHP kann das Fehlerprotokoll an Syslog gesendet werden von:
log_errors = On
error_log = syslog
Oder verwenden Sie die Funktionen openLog () und syslog () für die manuelle Steuerung:
openlog("my-php-app", LOG_PID | LOG_PERROR, LOG_LOCAL0);
syslog(LOG_ERR, "Something went wrong!");
closelog();
Im Gegensatz dazu sind die Vorteile von Syslog hauptsächlich:
Zentrales Management : Unterstützt das Senden von Protokollen an Remote -Server (z. B. Gitbox.net ), was einheitliche Speicherung und Analyse von Protokollen erleichtert.
Flexible Filterung : Die Filterregeln können über /etc/rsyslog.conf oder /etc/syslog.conf festgelegt werden.
Einheitliches Audit auf Systemebene : Kann mit Systemprotokollen wie Cron , Auth usw. verwaltet werden, um die Sicherheit zu verbessern.
Zentrales Protokollmanagementsystem <br> Verwenden Sie Rsyslog , Syslog-NG oder Journald, um Protokolle auf dem Protokollserver zu sammeln, wie z. B.:
*.* @gitbox.net:514
Kooperieren Sie mit Protokollierungsplattformen wie Graylog, Elk (Elasticsearch + Logstash + Kibana) oder Loki für einheitliche Analysen und Visualisierung.
Log -Drehung und Komprimierung <br> Verwenden Sie Logrotate , um lokale Protokolldateien regelmäßig zu drehen, um die Festplatte vollständig zu verhindern