Vous le savez sans doute : la console JavaScript (console.log) est un outil essentiel pour les développeurs web. Mais saviez-vous qu’il est possible de la rendre plus lisible (ou plus fun) en y ajoutant du style CSS ? Oui, console.log peut afficher des messages colorés, agrandis, soulignés ou même encadrés, en utilisant la puissance du CSS !

Commençons par un exemple de base :

console.log('%cCoucou le monde', 'color: blue; font-size: 20px;');

Le marqueur %c est le plus important ici : il signifie que ce qui suit sera stylisé en appliquant le CSS décrit en second argument.

Un autre exemple plus complet mais tout aussi inutile :

console.log(
    '%cCoucou le monde',
    'background-color: darkgreen; color: white; font-size: 2rem; padding: .5rem 1rem; border: 6px solid lightgreen'
);

Il est possible d'avoir plusieurs styles CSS dans un même console.log() :

console.log('%cAvertissement : %cErreur critique détectée', 
    'color: orange; font-weight: bold;', 
    'color: red; background: yellow; padding: 2px;'
);

Vous pouvez avoir des styles prédéfinis et les utiliser dans console.log() :

const logStyles = {
    api: 'background: #2196F3; color: white; padding: 2px 6px;',
    user: 'background: #FF9800; color: white; padding: 2px 6px;',
    system: 'background: #9C27B0; color: white; padding: 2px 6px;'
};

console.log('%c[API]%c Réponse reçue', logStyles.api, '');
console.log('%c[USER]%c Action utilisateur', logStyles.user, '');
console.log('%c[SYSTEM]%c Initialisation terminée', logStyles.system, '');

Un autre exemple avec un mini système de logging structuré :

const logger = {
    info: (msg) => console.log(`%c[INFO]%c ${msg}`, 'background: #2196F3; color: white; padding: 2px 6px; border-radius: 2px;', ''),
    warn: (msg) => console.log(`%c[WARN]%c ${msg}`, 'background: #FF9800; color: white; padding: 2px 6px; border-radius: 2px;', ''),
    error: (msg) => console.log(`%c[ERROR]%c ${msg}`, 'background: #F44336; color: white; padding: 2px 6px; border-radius: 2px;', ''),
    success: (msg) => console.log(`%c[SUCCESS]%c ${msg}`, 'background: #4CAF50; color: white; padding: 2px 6px; border-radius: 2px;', '')
};

// Usage
logger.info('Chargement des données...');
logger.success('Données chargées avec succès !');
logger.warn('Attention : cache expiré');
logger.error('Impossible de se connecter au serveur');

Ou encore faire des titres avec séparateur :

console.log('%c???? DÉMARRAGE DE L\'APPLICATION', 'font-size: 20px; font-weight: bold; color: #333; text-shadow: 2px 2px 4px rgba(0,0,0,0.3);');

console.log('%c' + '='.repeat(50), 'color: #ccc;');

Bien sûr, n'abusez pas des styles, utilisez-les avec parcimonie pour éviter de surcharger la console ;)

Sinon, vous pouvez utiliser des librairies toute faite comme Chalk, Pino, Winston, etc... et qui ajoutent beaucoup de fonctionnalités.

Quelques liens pour aller plus loin :