Aller au contenu

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_sqlite est 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 :

http://localhost:8042/_debug/profiler

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 :

GET /edu-logs

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 (colonnes id, 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

use Studoo\EduFramework\Core\Logs\LogsService;

LogsService::addLog('Mon événement personnalisé');

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.