compono-kit / file-error-handler
Simple error handler implementation, logging errors into files
Requires
- php: >=8.1
- compono-kit/error-handlers: ^1.0.0
Requires (Dev)
- phpunit/phpunit: ^10.0.0
README
Ein einfacher Error-Handler für das ComponoKit, der Fehler und Meldungen in eine Datei schreibt.
Installation
composer require compono-kit/file-error-handler
Voraussetzungen
- PHP >= 8.1
compono-kit/error-handlers^1.0.0
Schnellstart
1. Konfiguration implementieren
Erstelle eine Klasse, die das Interface ConfiguresFileErrorHandler implementiert:
use ComponoKit\ErrorHandlers\Files\Configs\ConfiguresFileErrorHandler; class MyLogConfig implements ConfiguresFileErrorHandler { public function getFilePathName(): string { return '/var/log/myapp/errors.log'; } public function appendingModeEnabled(): bool { return true; } }
2. Handler einrichten und benutzen
use ComponoKit\ErrorHandlers\Files\FileErrorHandler; $handler = new FileErrorHandler(new MyLogConfig()); // Verzeichnis anlegen (einmalig beim App-Start aufrufen) $handler->install(); // Fehler loggen $handler->error('Datenbankverbindung fehlgeschlagen');
Konfiguration
Das Interface ConfiguresFileErrorHandler hat zwei Methoden:
| Methode | Rückgabe | Bedeutung |
|---|---|---|
getFilePathName() |
string |
Vollständiger Pfad zur Log-Datei inkl. Dateiname |
appendingModeEnabled() |
bool |
true = an Datei anhängen, false = überschreiben |
Beispiel: Datei überschreiben statt anhängen
class OverwriteLogConfig implements ConfiguresFileErrorHandler { public function getFilePathName(): string { return '/var/log/myapp/latest.log'; } public function appendingModeEnabled(): bool { return false; // Datei wird bei jedem Schreibvorgang neu erstellt } }
Methoden
install()
Legt das Verzeichnis der Log-Datei an, falls es noch nicht existiert. Muss einmalig vor dem ersten Logging-Aufruf ausgeführt werden.
$handler->install();
Wenn das Verzeichnis nicht erstellt werden kann, wird eine RuntimeException geworfen.
error(string $message)
Für Fehler, die eine unmittelbare Reaktion erfordern, aber die Anwendung noch nicht zum Absturz bringen.
$handler->error('Benutzer konnte nicht in der Datenbank gespeichert werden');
Log-Ausgabe:
2026-06-24 14:32:01 [Error]: Benutzer konnte nicht in der Datenbank gespeichert werden
warning(string $message)
Für Situationen, die keine Fehler sind, aber Aufmerksamkeit verdienen.
$handler->warning('Speicherplatz unter 10 % verfügbar');
Log-Ausgabe:
2026-06-24 14:32:01 [Warning]: Speicherplatz unter 10 % verfügbar
critical(string $message)
Für kritische Zustände, die sofortige Maßnahmen erfordern.
$handler->critical('Primäre Datenbank nicht erreichbar');
Log-Ausgabe:
2026-06-24 14:32:01 [Critical]: Primäre Datenbank nicht erreichbar
alert(string $message)
Für Situationen, in denen sofort gehandelt werden muss (z. B. Alarmierung von Personen).
$handler->alert('Zahlungsdienstleister antwortet nicht');
Log-Ausgabe:
2026-06-24 14:32:01 [Alert]: Zahlungsdienstleister antwortet nicht
emergency(string $message)
Für den schlimmsten Fall: Das System ist nicht mehr funktionsfähig.
$handler->emergency('System komplett ausgefallen');
Log-Ausgabe:
2026-06-24 14:32:01 [Emergency]: System komplett ausgefallen
exception(\Throwable $throwable, string $message = '')
Loggt eine Exception mit optionalem Kontexttext, Klassen-Namen und vollem Stack-Trace.
try { $orderService->processPayment($orderId); } catch (\Throwable $throwable) { $handler->exception($throwable, 'Zahlung konnte nicht verarbeitet werden'); }
Log-Ausgabe:
2026-06-24 14:32:01 [Message]: Zahlung konnte nicht verarbeitet werden
[Exception]: (RuntimeException) Connection timed out
#0 /app/src/OrderService.php(42): PaymentGateway->charge()
#1 /app/src/Controller/CheckoutController.php(87): OrderService->processPayment()
...
Vollständiges Beispiel
use ComponoKit\ErrorHandlers\Files\Configs\ConfiguresFileErrorHandler; use ComponoKit\ErrorHandlers\Files\FileErrorHandler; class AppLogConfig implements ConfiguresFileErrorHandler { public function getFilePathName(): string { return __DIR__ . '/logs/app.log'; } public function appendingModeEnabled(): bool { return true; } } $handler = new FileErrorHandler(new AppLogConfig()); $handler->install(); // Im normalen Betrieb $handler->warning('Cache konnte nicht geladen werden, Fallback aktiv'); // Bei einem aufgefangenen Fehler try { $userService->deleteUser($userId); } catch (\Throwable $throwable) { $handler->exception($throwable, 'Benutzer konnte nicht gelöscht werden'); }