Signatur
Beschreibung
swoole_error_log() ist eine interne Swoole-Funktion, die es ermöglicht, Nachrichten direkt in das Swoole-eigene Logging-System zu schreiben. Sie wird vor allem in Swoole-Erweiterungen, eigenen Coroutinen oder asynchronen Servern eingesetzt, wenn man Log-Ausgaben in den gleichen Kanal wie Swoole-interne Meldungen leiten möchte.
Das Log-Level bestimmt, ob die Nachricht tatsächlich ausgegeben wird – abhängig vom konfigurierten Mindest-Log-Level von Swoole (gesetzt über swoole_set_process_name() bzw. die Serverkonfiguration log_level). Nachrichten unterhalb des konfigurierten Schwellwerts werden still verworfen.
Typische Log-Level-Konstanten sind: SWOOLE_LOG_DEBUG, SWOOLE_LOG_TRACE, SWOOLE_LOG_INFO, SWOOLE_LOG_NOTICE, SWOOLE_LOG_WARNING und SWOOLE_LOG_ERROR. Diese sind als Integer-Konstanten in der Swoole-Erweiterung definiert.
Die Funktion ist primär für den Einsatz innerhalb von Swoole-Server-Prozessen gedacht und eignet sich nicht als allgemeiner Ersatz für error_log() in klassischen PHP-Applikationen ohne Swoole-Kontext.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $level Pflicht | int | Log-Level als Integer-Konstante, z. B. SWOOLE_LOG_ERROR, SWOOLE_LOG_WARNING, SWOOLE_LOG_INFO, SWOOLE_LOG_DEBUG. Bestimmt die Priorität der Meldung. |
|
| $msg Pflicht | string | Der Meldungstext, der ins Log geschrieben werden soll. |
Rückgabewert
Beispiele
Fehlermeldung in einem Swoole-HTTP-Server loggen
<?php
// Voraussetzung: Swoole-Erweiterung ist installiert und geladen
$server = new Swoole\HTTP\Server('0.0.0.0', 9501);
$server->set([
'log_level' => SWOOLE_LOG_INFO,
'log_file' => '/var/log/swoole_server.log',
]);
$server->on('request', function ($request, $response) {
// Anfragedetails als Info loggen
swoole_error_log(SWOOLE_LOG_INFO, 'Neue Anfrage: ' . $request->server['request_uri']);
// Fehlerfall simulieren
if (empty($request->get['id'])) {
swoole_error_log(SWOOLE_LOG_WARNING, 'Parameter "id" fehlt in der Anfrage.');
$response->status(400);
$response->end('Fehlender Parameter');
return;
}
$response->end('Hallo, ID: ' . intval($request->get['id']));
});
$server->start();
Debug-Meldung im Coroutine-Kontext ausgeben
<?php
// Direktes Verwenden von swoole_error_log im Coroutine-Kontext
Swoole\Coroutine\run(function () {
swoole_error_log(SWOOLE_LOG_DEBUG, 'Coroutine gestartet, Verarbeitung beginnt.');
// Simulierter asynchroner Vorgang
Swoole\Coroutine::sleep(0.1);
swoole_error_log(SWOOLE_LOG_INFO, 'Coroutine-Verarbeitung abgeschlossen.');
});
// Wichtig · Fallstricke
Swoole-spezifisch: Diese Funktion steht nur zur Verfügung, wenn die Swoole-PHP-Erweiterung installiert und aktiv ist. In einer Standard-PHP-Umgebung ohne Swoole führt der Aufruf zu einem fatalen Fehler (Call to undefined function).
Log-Level-Filterung: Meldungen mit einem Level unterhalb des konfigurierten log_level des Servers werden intern verworfen und erscheinen nicht im Log. SWOOLE_LOG_DEBUG und SWOOLE_LOG_TRACE sollten im Produktivbetrieb deaktiviert werden, um die Performance nicht zu beeinträchtigen.
Kein Ersatz für PSR-3-Logger: Für komplexe Logging-Anforderungen (z. B. mit strukturierten Daten, mehreren Backends) sollte ein PSR-3-kompatibler Logger (z. B. Monolog) bevorzugt werden.