La barre de debug et le profiler¶
En mode développement (APP_ENV=dev), Edu Framework affiche une barre de debug en bas de chaque page (inspirée de la Web Debug Toolbar de Symfony) et met à disposition une page de profiler pour naviguer dans l'historique des requêtes HTTP reçues par le serveur.
Ces outils sont disponibles à partir de la version v2.3.0.
Prérequis¶
La barre de debug est active lorsque APP_ENV=dev. Le profiler et l'enregistrement des requêtes nécessitent en plus l'extension PHP pdo_sqlite.
Pour activer le mode dev :
## << Config application
## pour activer le mode dev, il faut mettre APP_ENV=dev
APP_ENV=dev
## >> Config application
- l'extension PHP
pdo_sqliteest installée (elle est utilisée pour stocker les logs des requêtes).
Mode production
Les routes /_debug/profiler et /edu-logs ne sont enregistrées qu'en mode dev.
Elles ne sont donc pas accessibles lorsque APP_ENV=prod.
La barre de debug¶
La barre s'affiche automatiquement en bas de chaque page. Chaque bloc affiche une information au survol :
| Bloc | Information |
|---|---|
| Statut HTTP | Code et libellé de la réponse (200 OK, 404 Not Found, ...) - le fond est coloré selon la famille du statut (2xx vert, 4xx orange, 5xx rouge) |
| Route | Chemin appelé, controller exécuté et paramètres de la route |
| Temps d'exécution | Durée totale de la requête en millisecondes |
| Mémoire | Pic d'utilisation mémoire et limite PHP (memory_limit) |
| Base de données | Type, hôte et nom de la base (visible uniquement si DB_HOST_STATUS=true) |
| Logs | Lien vers la page du profiler |
| PHP | Version de PHP et SAPI utilisée |
| Edu Framework | Version du framework, date de livraison et lien vers la documentation |
Réduire la barre
Le bouton × à droite de la barre permet de la réduire.
Un bouton avec le logo Edu Framework apparaît alors en bas à droite de l'écran pour la réafficher.
Cet état est mémorisé (localStorage) d'une page à l'autre.
Le profiler¶
Le profiler est une page (style Symfony Profiler) qui permet de naviguer dans les requêtes HTTP journalisées par le serveur de développement.
Elle est disponible à l'adresse :
Fonctionnalités¶
- liste des requêtes reçues, de la plus récente à la plus ancienne ;
- compteur du nombre de requêtes par famille de statut (2xx, 3xx, 4xx, 5xx) ;
- filtres combinables :
| Filtre | Description | Exemple |
|---|---|---|
| Méthode | Méthode HTTP (GET, POST, PUT, DELETE, ...) |
GET |
| Statut | Code complet ou famille de code (2, 3, 4 ou 5 pour 2xx à 5xx) | 404 ou 4 |
| Recherche | Recherche textuelle dans l'événement | favicon |
| IP | Adresse IP du client | 127.0.0.1 |
| URL | Fragment du chemin de la requête | /ville |
| Token | Identifiant du log | 42 |
| From / Until | Bornes de date (format YYYY-MM-DD, heure locale) |
2026-10-01 |
L'API des logs¶
Le profiler s'appuie sur un endpoint interne qui retourne les logs au format JSON :
Paramètres de la requête :
| Paramètre | Description | Défaut |
|---|---|---|
page |
Numéro de la page | 1 |
limit |
Nombre de logs par page (maximum 100) | 20 |
method |
Filtre sur la méthode HTTP | — |
status |
Filtre sur le statut complet (500) ou sa famille (5) |
— |
search |
Recherche textuelle | — |
ip |
Filtre sur l'adresse IP du client | — |
url |
Filtre sur le chemin de la requête | — |
token |
Filtre sur l'identifiant du log | — |
from |
Date de début (YYYY-MM-DD) |
— |
until |
Date de fin (YYYY-MM-DD) |
— |
Exemple de réponse :
{
"total": 42,
"page": 1,
"pages": 3,
"limit": 20,
"counts": {
"all": 42,
"2": 40,
"3": 0,
"4": 2,
"5": 0
},
"logs": [
{
"id": 42,
"event_date": "2026-10-05 12:34:56",
"event": {
"raw": "[Mon Oct 5 12:34:56 2026] 127.0.0.1:65229 [200]: GET /",
"timestamp": "Mon Oct 5 12:34:56 2026",
"ip_port": "127.0.0.1:65229",
"status_code": "200",
"method": "GET",
"path": "/"
}
}
]
}
Le stockage des logs¶
Les requêtes HTTP sont journalisées par la commande php bin/edu start : le framework analyse la sortie du serveur PHP intégré (grâce aux classes BufferFormat et BufferToServer) et enregistre chaque requête dans une base SQLite dédiée :
- fichier :
var/logs/core_logs.sqlite - table :
serv_logs(colonnesid,event_date,event_desc)
Info
Les requêtes du profiler et de la barre de debug (/_debug/... et /edu-logs) ne sont pas journalisées, afin d'éviter le remplissage de la base à chaque affichage d'une page d'outils.
Ajouter ses propres logs¶
La classe LogsService peut être utilisée directement dans votre application (controller, commande CLI, ...) pour enregistrer et lire vos propres événements.
Enregistrer un log¶
Lire les logs¶
use Studoo\EduFramework\Core\Logs\LogsService;
// Récupère les 20 derniers logs
$logs = LogsService::getLogs(20, 0);
// Récupère les logs filtrés (toutes les requêtes en 404)
$logs = LogsService::getLogs(20, 0, ['status' => '404']);
// Compte le nombre total de logs
$nbLogs = LogsService::countLogs();
// Compte les logs par famille de statut (2xx à 5xx)
$counts = LogsService::countByStatusFamily();
Filtres disponibles
Les méthodes getLogs(), countLogs() et countByStatusFamily() acceptent les mêmes filtres que l'API : method, status, search, ip, url, token, from et until.