Skip to content

Console

[Stable: 2 - Stable]

Stable: 2 Stability: 2 - Stable

Code source : lib/console.js

Le module node:console fournit une simple console de débogage similaire au mécanisme de console JavaScript fourni par les navigateurs web.

Le module exporte deux composants spécifiques :

  • Une classe Console avec des méthodes telles que console.log(), console.error() et console.warn() qui peuvent être utilisées pour écrire dans n’importe quel flux Node.js.
  • Une instance console globale configurée pour écrire dans process.stdout et process.stderr. La console globale peut être utilisée sans appeler require('node:console').

Avertissement : Les méthodes de l’objet console global ne sont ni uniformément synchrones comme les API de navigateur auxquelles elles ressemblent, ni uniformément asynchrones comme tous les autres flux Node.js. Les programmes qui souhaitent dépendre du comportement synchrone/asynchrone des fonctions de la console doivent d’abord déterminer la nature du flux de support de la console. Cela est dû au fait que le flux dépend de la plateforme sous-jacente et de la configuration de flux standard du processus actuel. Pour plus d’informations, consultez la note sur les E/S du processus.

Exemple d’utilisation de la console globale :

js
console.log('hello world')
// Affiche : hello world, sur stdout
console.log('hello %s', 'world')
// Affiche : hello world, sur stdout
console.error(new Error('Oups, une erreur s’est produite'))
// Affiche le message d’erreur et le suivi de pile sur stderr :
//  Erreur : Oups, une erreur s’est produite
//    at [eval]:5:15
//    at Script.runInThisContext (node:vm:132:18)
//    at Object.runInThisContext (node:vm:309:38)
//    at node:internal/process/execution:77:19
//    at [eval]-wrapper:6:22
//    at evalScript (node:internal/process/execution:76:60)
//    at node:internal/main/eval_string:23:3

const name = 'Will Robinson'
console.warn(`Danger ${name} ! Danger !`)
// Affiche : Danger Will Robinson ! Danger !, sur stderr

Exemple d’utilisation de la classe Console :

js
const out = getStreamSomehow()
const err = getStreamSomehow()
const myConsole = new console.Console(out, err)

myConsole.log('hello world')
// Affiche : hello world, sur out
myConsole.log('hello %s', 'world')
// Affiche : hello world, sur out
myConsole.error(new Error('Oups, une erreur s’est produite'))
// Affiche : [Erreur : Oups, une erreur s’est produite], sur err

const name = 'Will Robinson'
myConsole.warn(`Danger ${name} ! Danger !`)
// Affiche : Danger Will Robinson ! Danger !, sur err

Classe : Console

[Historique]

VersionModifications
v8.0.0Les erreurs qui se produisent lors de l'écriture dans les flux sous-jacents seront désormais ignorées par défaut.

La classe Console peut être utilisée pour créer un simple outil de journalisation avec des flux de sortie configurables et est accessible en utilisant require('node:console').Console ou console.Console (ou leurs homologues déstructurés) :

js
import { Console } from 'node:console'
js
const { Console } = require('node:console')
js
const { Console } = console

new Console(stdout[, stderr][, ignoreErrors])

new Console(options)

[Historique]

VersionModifications
v14.2.0, v12.17.0L'option groupIndentation a été introduite.
v11.7.0L'option inspectOptions est introduite.
v10.0.0Le constructeur Console prend désormais en charge un argument options, et l'option colorMode a été introduite.
v8.0.0L'option ignoreErrors a été introduite.
  • options <Object>
    • stdout <stream.Writable>
    • stderr <stream.Writable>
    • ignoreErrors <boolean> Ignore les erreurs lors de l'écriture dans les flux sous-jacents. Par défaut : true.
    • colorMode <boolean> | <string> Définit la prise en charge des couleurs pour cette instance Console. La valeur true active la coloration lors de l'inspection des valeurs. La valeur false désactive la coloration lors de l'inspection des valeurs. La valeur 'auto' fait dépendre la prise en charge des couleurs de la valeur de la propriété isTTY et de la valeur renvoyée par getColorDepth() sur le flux respectif. Cette option ne peut pas être utilisée si inspectOptions.colors est également définie. Par défaut : 'auto'.
    • inspectOptions <Object> Spécifie les options qui sont transmises à util.inspect().
    • groupIndentation <number> Définit l'indentation de groupe. Par défaut : 2.

Crée une nouvelle Console avec une ou deux instances de flux accessibles en écriture. stdout est un flux accessible en écriture pour imprimer les journaux ou les informations. stderr est utilisé pour les avertissements ou les erreurs. Si stderr n'est pas fourni, stdout est utilisé pour stderr.

js
import { createWriteStream } from 'node:fs'
import { Console } from 'node:console'
// Alternativement
// const { Console } = console;

const output = createWriteStream('./stdout.log')
const errorOutput = createWriteStream('./stderr.log')
// Journaliseur simple personnalisé
const logger = new Console({ stdout: output, stderr: errorOutput })
// L'utiliser comme la console
const count = 5
logger.log('count: %d', count)
// Dans stdout.log : count 5
js
const fs = require('node:fs')
const { Console } = require('node:console')
// Alternativement
// const { Console } = console;

const output = fs.createWriteStream('./stdout.log')
const errorOutput = fs.createWriteStream('./stderr.log')
// Journaliseur simple personnalisé
const logger = new Console({ stdout: output, stderr: errorOutput })
// L'utiliser comme la console
const count = 5
logger.log('count: %d', count)
// Dans stdout.log : count 5

La console globale est une Console spéciale dont la sortie est envoyée à process.stdout et process.stderr. Elle est équivalente à l'appel :

js
new Console({ stdout: process.stdout, stderr: process.stderr })

console.assert(value[, ...message])

[Historique]

VersionChangements
v10.0.0L'implémentation est maintenant conforme aux spécifications et ne lève plus d'exception.
v0.1.101Ajouté dans : v0.1.101
  • value <any> La valeur testée pour savoir si elle est truthy.
  • ...message <any> Tous les arguments autres que value sont utilisés comme message d'erreur.

console.assert() écrit un message si value est falsy ou omis. Il écrit uniquement un message et n'affecte pas l'exécution. La sortie commence toujours par "Assertion failed". Si elle est fournie, message est mise en forme à l'aide de util.format().

Si value est truthy, il ne se passe rien.

js
console.assert(true, 'ne fait rien')

console.assert(false, 'Oups %s a fonctionné', "n'a pas")
// Assertion failed: Oups n'a pas fonctionné

console.assert()
// Assertion failed

console.clear()

Ajouté dans : v8.3.0

Lorsque stdout est un TTY, l'appel de console.clear() tente d'effacer le TTY. Lorsque stdout n'est pas un TTY, cette méthode ne fait rien.

Le fonctionnement spécifique de console.clear() peut varier selon les systèmes d'exploitation et les types de terminal. Pour la plupart des systèmes d'exploitation Linux, console.clear() fonctionne de la même manière que la commande shell clear. Sous Windows, console.clear() efface uniquement la sortie dans la fenêtre d'affichage du terminal actuel pour le binaire Node.js.

console.count([label])

Ajouté dans : v8.3.0

  • label <string> L'étiquette d'affichage pour le compteur. Par défaut : 'default'.

Maintient un compteur interne spécifique à label et affiche dans stdout le nombre de fois que console.count() a été appelé avec l'étiquette label donnée.

js
> console.count()
default : 1
undefined
> console.count('default')
default : 2
undefined
> console.count('abc')
abc : 1
undefined
> console.count('xyz')
xyz : 1
undefined
> console.count('abc')
abc : 2
undefined
> console.count()
default : 3
undefined
>

console.countReset([label])

Ajouté dans : v8.3.0

  • label <string> L’étiquette d’affichage du compteur. Par défaut : 'default'.

Réinitialise le compteur interne spécifique à label.

js
> console.count('abc');
abc : 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc : 1
undefined
>

console.debug(data[, ...args])

[Historique]

VersionModifications
v8.10.0console.debug est désormais un alias pour console.log.
v8.0.0Ajouté dans : v8.0.0

La fonction console.debug() est un alias pour console.log().

console.dir(obj[, options])

Ajouté dans : v0.1.101

  • obj <any>
  • options <Object>
    • showHidden <boolean> Si true, les propriétés non-énumérables et symboles de l’objet seront également affichées. Par défaut : false.
    • depth <number> Indique à util.inspect() combien de fois il faut effectuer une récursion lors de la mise en forme de l’objet. Ceci est utile pour inspecter des objets volumineux et complexes. Pour que la récursion soit infinie, passez null. Par défaut : 2.
    • colors <boolean> Si true, la sortie sera stylisée avec des codes de couleurs ANSI. Les couleurs sont personnalisables ; voir personnalisation des couleurs util.inspect(). Par défaut : false.

Utilise util.inspect() sur obj et affiche la chaîne résultante dans stdout. Cette fonction ignore toute fonction inspect() personnalisée définie sur obj.

console.dirxml(...data)

[Historique]

VersionChangements
v9.3.0console.dirxml appelle maintenant console.log pour ses arguments.
v8.0.0Ajouté dans : v8.0.0

Cette méthode appelle console.log() en lui passant les arguments reçus. Cette méthode ne produit aucun formatage XML.

console.error([data][, ...args])

Ajouté dans : v0.1.100

Affiche sur stderr avec un saut de ligne. Plusieurs arguments peuvent être passés, le premier étant utilisé comme message principal et tous les arguments supplémentaires étant utilisés comme valeurs de substitution, de manière similaire à printf(3) (les arguments sont tous passés à util.format()).

js
const code = 5
console.error('erreur #%d', code)
// Affiche : erreur #5, vers stderr
console.error('erreur', code)
// Affiche : erreur 5, vers stderr

Si des éléments de formatage (par exemple, %d) ne sont pas trouvés dans la première chaîne, alors util.inspect() est appelé sur chaque argument et les valeurs de chaîne résultantes sont concaténées. Voir util.format() pour plus d'informations.

console.group([...label])

Ajouté dans : v8.5.0

Augmente l'indentation des lignes suivantes par des espaces, de la longueur de groupIndentation.

Si un ou plusieurs label sont fournis, ceux-ci sont imprimés en premier sans l'indentation supplémentaire.

console.groupCollapsed()

Ajouté dans : v8.5.0

Un alias pour console.group().

console.groupEnd()

Ajouté dans : v8.5.0

Diminue l'indentation des lignes suivantes par des espaces, de la longueur de groupIndentation.

console.info([data][, ...args])

Ajouté dans : v0.1.100

La fonction console.info() est un alias pour console.log().

console.log([data][, ...args])

Ajouté dans : v0.1.100

Affiche sur stdout avec un retour à la ligne. Plusieurs arguments peuvent être passés, le premier étant utilisé comme message principal et tous les autres comme valeurs de substitution similaires à printf(3) (les arguments sont tous passés à util.format()).

js
const count = 5
console.log('count: %d', count)
// Affiche : count: 5, sur stdout
console.log('count:', count)
// Affiche : count: 5, sur stdout

Voir util.format() pour plus d’informations.

console.table(tabularData[, properties])

Ajouté dans : v10.0.0

  • tabularData <any>
  • properties <string[]> Autres propriétés pour la construction du tableau.

Tente de construire un tableau avec les colonnes des propriétés de tabularData (ou utiliser properties) et les lignes de tabularData et de l'afficher. Revient à afficher l'argument s'il ne peut pas être analysé comme tabulaire.

js
// Ces données ne peuvent pas être analysées comme tabulaires
console.table(Symbol())
// Symbol()

console.table(undefined)
// undefined

console.table([
  { a: 1, b: 'Y' },
  { a: 'Z', b: 2 },
])
// ┌─────────┬─────┬─────┐
// │ (index) │ a   │ b   │
// ├─────────┼─────┼─────┤
// │ 0       │ 1   │ 'Y' │
// │ 1       │ 'Z' │ 2   │
// └─────────┴─────┴─────┘

console.table(
  [
    { a: 1, b: 'Y' },
    { a: 'Z', b: 2 },
  ],
  ['a']
)
// ┌─────────┬─────┐
// │ (index) │ a   │
// ├─────────┼─────┤
// │ 0       │ 1   │
// │ 1       │ 'Z' │
// └─────────┴─────┘

console.time([label])

Ajouté en : v0.1.104

Démarre un chronomètre qui peut être utilisé pour calculer la durée d'une opération. Les chronomètres sont identifiés par un label unique. Utilisez le même label lorsque vous appelez console.timeEnd() pour arrêter le chronomètre et afficher le temps écoulé dans des unités de temps appropriées vers stdout. Par exemple, si le temps écoulé est de 3869 ms, console.timeEnd() affiche "3.869s".

console.timeEnd([label])

[Historique]

VersionModifications
v13.0.0Le temps écoulé est affiché avec une unité de temps appropriée.
v6.0.0Cette méthode ne prend plus en charge plusieurs appels qui ne correspondent pas à des appels individuels console.time() ; voir ci-dessous pour plus de détails.
v0.1.104Ajouté en : v0.1.104

Arrête un chronomètre qui a été précédemment démarré en appelant console.time() et affiche le résultat vers stdout :

js
console.time('tas-de-trucs')
// Faire un tas de trucs.
console.timeEnd('tas-de-trucs')
// Affiche : tas-de-trucs: 225.438ms

console.timeLog([label][, ...data])

Ajouté en : v10.7.0

Pour un chronomètre qui a été précédemment démarré en appelant console.time(), affiche le temps écoulé et d'autres arguments data vers stdout :

js
console.time('processus')
const value = processusCouteux1() // Renvoie 42
console.timeLog('processus', value)
// Affiche "processus: 365.227ms 42".
faireProcessusCouteux2(value)
console.timeEnd('processus')

console.trace([message][, ...args])

Ajouté en : v0.1.104

Affiche vers stderr la chaîne 'Trace : ', suivie du message formaté util.format() et de la trace de pile jusqu'à la position actuelle dans le code.

js
console.trace('Montre moi')
// Affiche : (la trace de pile variera en fonction de l’endroit où la trace est appelée)
//  Trace : Montre moi
//    at repl:2:9
//    at REPLServer.defaultEval (repl.js:248:27)
//    at bound (domain.js:287:14)
//    at REPLServer.runBound [as eval] (domain.js:300:12)
//    at REPLServer.<anonymous> (repl.js:412:12)
//    at emitOne (events.js:82:20)
//    at REPLServer.emit (events.js:169:7)
//    at REPLServer.Interface._onLine (readline.js:210:10)
//    at REPLServer.Interface._line (readline.js:549:8)
//    at REPLServer.Interface._ttyWrite (readline.js:826:14)

console.warn([data][, ...args])

Ajoutée dans : v0.1.100

La fonction console.warn() est un alias pour console.error().

Méthodes réservées à l'inspecteur

Les méthodes suivantes sont exposées par le moteur V8 dans l’API générale, mais n’affichent rien, sauf si elles sont utilisées avec l’inspecteur (indicateur --inspect).

console.profile([label])

Ajoutée dans : v8.0.0

Cette méthode n’affiche rien, sauf si elle est utilisée avec l’inspecteur. La méthode console.profile() démarre un profilage CPU JavaScript avec une étiquette facultative jusqu’à ce que console.profileEnd() soit appelée. Le profil est ensuite ajouté au panneau Profile de l’inspecteur.

js
console.profile('MyLabel')
// Du code
console.profileEnd('MyLabel')
// Ajoute le profil 'MyLabel' au panneau Profiles de l’inspecteur.

console.profileEnd([label])

Ajoutée dans : v8.0.0

Cette méthode n’affiche rien, sauf si elle est utilisée avec l’inspecteur. Met fin à la session de profilage CPU JavaScript actuelle si une session a été démarrée et imprime le rapport dans le panneau Profiles de l’inspecteur. Voir console.profile() pour un exemple.

Si cette méthode est appelée sans étiquette, le profilage démarré le plus récemment est arrêté.

console.timeStamp([label])

Ajoutée dans : v8.0.0

Cette méthode n’affiche rien, sauf si elle est utilisée avec l’inspecteur. La méthode console.timeStamp() ajoute un événement avec l’étiquette 'label' au panneau Timeline de l’inspecteur.