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 queconsole.log()
,console.error()
etconsole.warn()
qui peuvent être utilisées pour écrire dans n’importe quel flux Node.js. - Une instance
console
globale configurée pour écrire dansprocess.stdout
etprocess.stderr
. Laconsole
globale peut être utilisée sans appelerrequire('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 :
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
:
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]
Version | Modifications |
---|---|
v8.0.0 | Les 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) :
import { Console } from 'node:console'
const { Console } = require('node:console')
const { Console } = console
new Console(stdout[, stderr][, ignoreErrors])
new Console(options)
[Historique]
Version | Modifications |
---|---|
v14.2.0, v12.17.0 | L'option groupIndentation a été introduite. |
v11.7.0 | L'option inspectOptions est introduite. |
v10.0.0 | Le constructeur Console prend désormais en charge un argument options , et l'option colorMode a été introduite. |
v8.0.0 | L'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 instanceConsole
. La valeurtrue
active la coloration lors de l'inspection des valeurs. La valeurfalse
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 pargetColorDepth()
sur le flux respectif. Cette option ne peut pas être utilisée siinspectOptions.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
.
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
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 :
new Console({ stdout: process.stdout, stderr: process.stderr })
console.assert(value[, ...message])
[Historique]
Version | Changements |
---|---|
v10.0.0 | L'implémentation est maintenant conforme aux spécifications et ne lève plus d'exception. |
v0.1.101 | Ajouté dans : v0.1.101 |
value
<any> La valeur testée pour savoir si elle est truthy....message
<any> Tous les arguments autres quevalue
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.
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.
> 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
.
> console.count('abc');
abc : 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc : 1
undefined
>
console.debug(data[, ...args])
[Historique]
Version | Modifications |
---|---|
v8.10.0 | console.debug est désormais un alias pour console.log . |
v8.0.0 | Ajouté 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> Sitrue
, 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, passeznull
. Par défaut :2
.colors
<boolean> Sitrue
, la sortie sera stylisée avec des codes de couleurs ANSI. Les couleurs sont personnalisables ; voir personnalisation des couleursutil.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]
Version | Changements |
---|---|
v9.3.0 | console.dirxml appelle maintenant console.log pour ses arguments. |
v8.0.0 | Ajouté dans : v8.0.0 |
...data
<any>
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()
).
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
...label
<any>
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()
).
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.
// 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
label
<string> Par défaut :'default'
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]
Version | Modifications |
---|---|
v13.0.0 | Le temps écoulé est affiché avec une unité de temps appropriée. |
v6.0.0 | Cette 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.104 | Ajouté en : v0.1.104 |
label
<string> Par défaut :'default'
Arrête un chronomètre qui a été précédemment démarré en appelant console.time()
et affiche le résultat vers stdout
:
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
:
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.
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
label
<string>
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.
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
label
<string>
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
label
<string>
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.