Dans le développement d'applications Electron, la clarté des journaux d'exécution est primordiale pour le débogage. La bibliothèque electron-log est souvent la solution de référence. Cependant, sa fonctionnalité par défaut d'alignement des étiquettes (Scope), qui ajoute des espaces de remplissage (padding), peut rendre la lecture des fichiers logs fastidieuse. Voici comment configurer ou désactiver ce comportement via trois approches pratiques.
Approche 1 : Désactivation globale du remplissage
Si votre objectif est de supprimer totalement les espaces superflus devant vos messages de log pour l'ensemble de l'application, la méthode la plus rapide consiste à modifier la configuration globale de l'objet scope.
En définissant la propriété labelPadding sur false, vous indiquez au moteur de rendu des logs de ne pas calculer de largeur fixe pour les étiquettes.
const logger = require('electron-log');
// Supprime tout espacement automatique pour les étiquettes de portée
logger.scope.labelPadding = false;
logger.scope('AUTH').info('Connexion réussie');
Techniquement, le noyau de la bibliothèque évalue le type de labelPadding. S'il reçoit un booléen faux, il force la longueur de l'étiquette à zéro dans le calcul du formatage, éliminant ainsi les appels à la fonction de complétion de chaîne.
Approche 2 : Définition d'une largeur fixe personnalisée
Parfois, vous souhaitez conserver un certain alignement pour maintenir une structure visuelle, sans pour autant laisser la bibliothèque utiliser la longueur du nom de scope le plus long. Vous pouvez imposer une valeur numérique stricte.
const logger = require('electron-log');
// Définit une largeur constante de 10 caractères pour les labels
logger.scope.labelPadding = 10;
logger.scope('API').warn('Requête lente');
Cette configuration garantit que chaque étiquette occupera exactement le nombre de caractères spécifié, offrant un compromis idéal entre lisibilité et compacité des fichiers de sortie.
Approche 3 : Configuration granulaire par instance
Dans les applications complexes, il est fréquent que différents modules nécessitent des formats de logs distincts. Il est possible d'isoler la configuraton du padding pour un scope spécifique sans affecter le reste de l'application.
const baseLogger = require('electron-log');
// Création d'un logger dédié au module réseau avec sa propre configuration
const networkLogger = baseLogger.scope('network');
networkLogger.scope.labelPadding = false;
// Ce log n'aura pas de padding
networkLogger.info('Données reçues');
// Le logger principal conserve ses réglages par défaut
baseLogger.info('Message système');
Chaque instance générée via la méthode scope() possède son propre contexte de configuraton, ce qui permet une flexibilité totale selon la source du message.
Fonctionnement interne du formatage
Pour comprendre comment ces réglages impactent le rendu final, il faut regarder la logique de transformation des chaînes de caractères. Le module utilise généralement une structure conditionnelle pour traiter le label :
let formattedScope;
if (labelName !== undefined) {
// Si labelPadding est désactivé, l'ajout d'espaces (padEnd) est ignoré
formattedScope = paddingLength > 0
? ` [${labelName}]`.padEnd(paddingLength + 2)
: ` [${labelName}]`;
} else {
formattedScope = '';
}
En manipulant ces trois options, vous pouvez réduire considérablement le "bruit" visuel dans vos consoles et vos fichiers de logs, tout en conservant les métadonnées essentielles au suivi de l'exécution de votre application Electron.