Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/bgineste/loggerwp/archive/refs/heads/main.zipPlugin WordPress de journalisation PHP et JavaScript. Conçu pour être déployé en mu-plugin, il se charge très tôt dans le cycle WordPress et met à disposition une classe de logging réutilisable sur plusieurs sites.
Objectif
LoggerWP fournit :
- Une classe PHP
BG_Loggerpour écrire des messages dans des fichiers de log (debug, trace, suivi) - Un logger JavaScript pour capturer les événements console du navigateur
- Un logger JavaScript orienté "tracks" pour suivre des historiques métier
- Une surveillance automatique de la taille des fichiers de log (rotation à 4 Mo)
Structure du plugin
loggerwp/
├── loggerwp.php ← Fichier principal : classe BG_Logger, hooks WordPress, loggers JS
└── js/
├── client-logger.js ← Capture des événements console (errors, warnings, logs)
└── class-logger.js ← Logger JS orienté tracks
Répertoires de logs créés automatiquement
À partir du chemin configuré (option loggerwp_path_logs, défaut : logs/), LoggerWP crée :
{ABSPATH}/logs/
├── debug/ ← Logs d'erreurs PHP et de debug
├── tracks/ ← Fichiers de suivi métier
└── console/ ← Trace des événements JavaScript
Installation
LoggerWP est conçu pour être utilisé en mu-plugin avec un loader. Cette approche permet de contrôler l'ordre de chargement et d'isoler la configuration spécifique à chaque site.
1. Déposer le plugin
Copier le dossier loggerwp/ dans wp-content/mu-plugins/ :
wp-content/mu-plugins/
├── mu-plugins-loader.php
├── loggerwp/
│ └── loggerwp.php
└── site-config/
└── init-debug-track.php
2. Créer le loader
WordPress ne charge pas automatiquement les fichiers dans les sous-dossiers de mu-plugins/. Il faut un fichier loader à la racine qui orchestre le chargement dans le bon ordre :
<?php
// wp-content/mu-plugins/mu-plugins-loader.php
// 1. LoggerWP en premier — définit la classe BG_Logger et les constantes de chemins
require_once __DIR__ . '/loggerwp/loggerwp.php';
// 2. Initialisation des trackers propres à ce site
require_once __DIR__ . '/site-config/init-debug-track.php';
// 3. Autres mu-plugins éventuels
// require_once __DIR__ . '/autre-plugin/autre-plugin.php';
Important :
loggerwp.phpdoit impérativement être chargé avantinit-debug-track.php, car ce dernier instancie des objetsBG_Loggerqui dépendent des constantes définies par LoggerWP.
3. Créer le fichier d'initialisation des trackers
Ce fichier est spécifique à chaque site. Il instancie les objets BG_Logger dont le site a besoin :
<?php
// wp-content/mu-plugins/site-config/init-debug-track.php
ini_set('display_errors', '0');
// Tracker de debug général
global $log_php_debug;
$log_php_debug = new BG_Logger('log-php-debug.txt', LOGGERWP_LOGS_DEBUG_PATH, true, true);
// Tracker de trace général
global $log_php_trace;
$log_php_trace = new BG_Logger('log-php-trace.txt', LOGGERWP_LOGS_TRACK_PATH, true, true);
$log_php_trace->log('>>>>>> Init trace');
// Ajouter ici les trackers spécifiques au site...
Utilisation
Logger PHP
Instancier un logger
$mon_logger = new BG_Logger(
'mon-fichier.txt', // Nom du fichier de log
LOGGERWP_LOGS_TRACK_PATH, // Répertoire (utiliser les constantes LoggerWP)
true, // Afficher la date sur chaque entrée
true // Afficher l'IP
);
Écrire dans le log
// Message simple
$mon_logger->log('Mon message');
// Avec localisation dans le code
$mon_logger->log('Mon message', fichier: basename(__FILE__), ligne: __LINE__);
// Avec indentation (pour structurer visuellement les logs)
$mon_logger->log('Détail imbriqué', indent: 1);
// Sans date ni IP (surcharge ponctuelle)
$mon_logger->log('Séparateur', ligneDate: false, afficherIP: false);
Autres méthodes
// Récupérer le chemin complet du fichier log
$chemin = $mon_logger->fichier_log();
// Vider le fichier log
$mon_logger->fichier_zap();
// Logger uniquement l'IP
$mon_logger->log_ip();
Constantes disponibles
Définies automatiquement au chargement du plugin :
| Constante | Chemin |
|---|---|
LOGGERWP_LOGS_PATH |
Racine des logs |
LOGGERWP_LOGS_TRACK_PATH |
Sous-dossier tracks/ |
LOGGERWP_LOGS_DEBUG_PATH |
Sous-dossier debug/ |
LOGGERWP_LOGS_CONSOLE_PATH |
Sous-dossier console/ |
Logger JavaScript
Les scripts JS sont automatiquement injectés dans le front-end via wp_enqueue_scripts.
Trace console (client-logger.js) : capture automatiquement les console.error, console.warn et console.log et les envoie vers logs/console/trace-console.txt.
Class logger (class-logger.js) : logger JS à instancier manuellement pour suivre des historiques métier, avec écriture dans logs/tracks/.
Configuration
Le chemin racine des logs est configurable via l'option WordPress loggerwp_path_logs (défaut : logs). Elle peut être modifiée directement en base via un update_option ou via une interface d'administration.
Mise à jour
Ce plugin est versionné sur GitHub. Pour mettre à jour un site :
- Télécharger le ZIP depuis GitHub (
Code > Download ZIP) - Extraire le dossier
loggerwp/ - Le déposer via FTP/SFTP dans
wp-content/mu-plugins/en remplacement de l'existant
Le fichier init-debug-track.php n'est pas touché par cette opération.
Notes
- Les fichiers de log sont protégés contre les écritures concurrentes via
flock - Une rotation automatique est effectuée : tout fichier dépassant 4 Mo est renommé en
.bakhorodaté - La vérification de taille est exécutée au plus une fois par semaine (option
loggerwp_last_log_check)