LoggerWP
Plugin wordpress pour logger depuis js ou php
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/bgineste/loggerwp/archive/refs/heads/main.zipReadme
LoggerWP
Plugin 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)