Console
[Stabile: 2 - Stabile]
Stabile: 2 Stabilità: 2 - Stabile
Codice sorgente: lib/console.js
Il modulo node:console
fornisce una semplice console di debug simile al meccanismo della console JavaScript fornito dai browser web.
Il modulo esporta due componenti specifici:
- Una classe
Console
con metodi comeconsole.log()
,console.error()
econsole.warn()
che possono essere utilizzati per scrivere su qualsiasi stream Node.js. - Un'istanza globale
console
configurata per scrivere suprocess.stdout
eprocess.stderr
. Laconsole
globale può essere utilizzata senza chiamarerequire('node:console')
.
Avviso: I metodi dell'oggetto console globale non sono né coerentemente sincroni come le API del browser a cui assomigliano, né coerentemente asincroni come tutti gli altri stream Node.js. I programmi che desiderano dipendere dal comportamento sincrono/asincrono delle funzioni della console dovrebbero prima capire la natura dello stream di supporto della console. Questo perché lo stream dipende dalla piattaforma sottostante e dalla configurazione dello stream standard del processo corrente. Consultare la nota sull'I/O del processo per ulteriori informazioni.
Esempio di utilizzo della console
globale:
console.log('hello world');
// Stampa: hello world, su stdout
console.log('hello %s', 'world');
// Stampa: hello world, su stdout
console.error(new Error('Whoops, something bad happened'));
// Stampa il messaggio di errore e la traccia dello stack su stderr:
// Error: Whoops, something bad happened
// 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!`);
// Stampa: Danger Will Robinson! Danger!, su stderr
Esempio di utilizzo della classe Console
:
const out = getStreamSomehow();
const err = getStreamSomehow();
const myConsole = new console.Console(out, err);
myConsole.log('hello world');
// Stampa: hello world, su out
myConsole.log('hello %s', 'world');
// Stampa: hello world, su out
myConsole.error(new Error('Whoops, something bad happened'));
// Stampa: [Error: Whoops, something bad happened], su err
const name = 'Will Robinson';
myConsole.warn(`Danger ${name}! Danger!`);
// Stampa: Danger Will Robinson! Danger!, su err
Classe: Console
[Cronologia]
Versione | Modifiche |
---|---|
v8.0.0 | Gli errori che si verificano durante la scrittura nei flussi sottostanti saranno ora ignorati per impostazione predefinita. |
La classe Console
può essere utilizzata per creare un logger semplice con flussi di output configurabili e a cui è possibile accedere utilizzando require('node:console').Console
o console.Console
(o le loro controparti destrutturate):
import { Console } from 'node:console';
const { Console } = require('node:console');
const { Console } = console;
new Console(stdout[, stderr][, ignoreErrors])
new Console(options)
[Cronologia]
Versione | Modifiche |
---|---|
v14.2.0, v12.17.0 | È stata introdotta l'opzione groupIndentation . |
v11.7.0 | È stata introdotta l'opzione inspectOptions . |
v10.0.0 | Il costruttore Console ora supporta un argomento options ed è stata introdotta l'opzione colorMode . |
v8.0.0 | È stata introdotta l'opzione ignoreErrors . |
options
<Object>stdout
<stream.Writable>stderr
<stream.Writable>ignoreErrors
<boolean> Ignora gli errori durante la scrittura nei flussi sottostanti. Predefinito:true
.colorMode
<boolean> | <string> Imposta il supporto del colore per questa istanza diConsole
. L'impostazione sutrue
abilita la colorazione durante l'ispezione dei valori. L'impostazione sufalse
disabilita la colorazione durante l'ispezione dei valori. L'impostazione su'auto'
fa dipendere il supporto del colore dal valore della proprietàisTTY
e dal valore restituito dagetColorDepth()
sul rispettivo flusso. Questa opzione non può essere utilizzata se è impostato ancheinspectOptions.colors
. Predefinito:'auto'
.inspectOptions
<Object> Specifica le opzioni che vengono passate autil.inspect()
.groupIndentation
<number> Imposta il rientro del gruppo. Predefinito:2
.
Crea una nuova Console
con una o due istanze di flusso scrivibili. stdout
è un flusso scrivibile per stampare l'output di log o info. stderr
viene utilizzato per l'output di avviso o errore. Se stderr
non è fornito, stdout
viene utilizzato per stderr
.
import { createWriteStream } from 'node:fs';
import { Console } from 'node:console';
// Alternatively
// const { Console } = console;
const output = createWriteStream('./stdout.log');
const errorOutput = createWriteStream('./stderr.log');
// Custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5
const fs = require('node:fs');
const { Console } = require('node:console');
// Alternatively
// const { Console } = console;
const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// Custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5
La console
globale è una Console
speciale il cui output viene inviato a process.stdout
e process.stderr
. È equivalente a chiamare:
new Console({ stdout: process.stdout, stderr: process.stderr });
console.assert(value[, ...message])
[Cronologia]
Versione | Modifiche |
---|---|
v10.0.0 | L'implementazione è ora conforme alle specifiche e non genera più errori. |
v0.1.101 | Aggiunto in: v0.1.101 |
value
<any> Il valore testato per essere truthy....message
<any> Tutti gli argomenti oltre avalue
vengono utilizzati come messaggio di errore.
console.assert()
scrive un messaggio se value
è falsy o omesso. Scrive solo un messaggio e non influisce in altro modo sull'esecuzione. L'output inizia sempre con "Assertion failed"
. Se fornito, message
viene formattato utilizzando util.format()
.
Se value
è truthy, non accade nulla.
console.assert(true, 'non fa nulla');
console.assert(false, 'Ops %s non funziona', 'non');
// Assertion failed: Ops non funziona
console.assert();
// Assertion failed
console.clear()
Aggiunto in: v8.3.0
Quando stdout
è un TTY, la chiamata a console.clear()
tenterà di cancellare il TTY. Quando stdout
non è un TTY, questo metodo non fa nulla.
L'operazione specifica di console.clear()
può variare tra sistemi operativi e tipi di terminale. Per la maggior parte dei sistemi operativi Linux, console.clear()
funziona in modo simile al comando shell clear
. Su Windows, console.clear()
cancellerà solo l'output nella viewport del terminale corrente per il binario Node.js.
console.count([label])
Aggiunto in: v8.3.0
label
<string> L'etichetta di visualizzazione per il contatore. Predefinito:'default'
.
Mantiene un contatore interno specifico per label
ed emette su stdout
il numero di volte in cui console.count()
è stato chiamato con il dato label
.
> 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])
Aggiunto in: v8.3.0
label
<stringa> L'etichetta di visualizzazione per il contatore. Predefinito:'default'
.
Ripristina il contatore interno specifico per label
.
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>
console.debug(data[, ...args])
[Cronologia]
Versione | Modifiche |
---|---|
v8.10.0 | console.debug è ora un alias per console.log . |
v8.0.0 | Aggiunto in: v8.0.0 |
data
<qualsiasi>...args
<qualsiasi>
La funzione console.debug()
è un alias per console.log()
.
console.dir(obj[, options])
Aggiunto in: v0.1.101
obj
<qualsiasi>options
<Oggetto>showHidden
<booleano> Setrue
, verranno mostrate anche le proprietà non enumerabili e simboliche dell'oggetto. Predefinito:false
.depth
<numero> Indica autil.inspect()
quante volte ricorrere durante la formattazione dell'oggetto. Questo è utile per ispezionare oggetti grandi e complicati. Per farlo ricorrere all'infinito, passanull
. Predefinito:2
.colors
<booleano> Setrue
, l'output verrà stilizzato con codici colore ANSI. I colori sono personalizzabili; vedere personalizzazione dei coloriutil.inspect()
. Predefinito:false
.
Utilizza util.inspect()
su obj
e stampa la stringa risultante su stdout
. Questa funzione aggira qualsiasi funzione inspect()
personalizzata definita su obj
.
console.dirxml(...data)
[Cronologia]
Versione | Modifiche |
---|---|
v9.3.0 | console.dirxml ora chiama console.log per i suoi argomenti. |
v8.0.0 | Aggiunto in: v8.0.0 |
...data
<any>
Questo metodo chiama console.log()
passandogli gli argomenti ricevuti. Questo metodo non produce alcuna formattazione XML.
console.error([data][, ...args])
Aggiunto in: v0.1.100
Stampa su stderr
con una nuova riga. È possibile passare più argomenti, con il primo utilizzato come messaggio principale e tutti gli altri utilizzati come valori di sostituzione simili a printf(3)
(gli argomenti vengono tutti passati a util.format()
).
const code = 5;
console.error('errore #%d', code);
// Stampa: errore #5, su stderr
console.error('errore', code);
// Stampa: errore 5, su stderr
Se gli elementi di formattazione (ad es. %d
) non vengono trovati nella prima stringa, allora viene chiamato util.inspect()
su ogni argomento e i valori stringa risultanti vengono concatenati. Vedi util.format()
per maggiori informazioni.
console.group([...label])
Aggiunto in: v8.5.0
...label
<any>
Aumenta l'indentazione delle righe successive di spazi per la lunghezza di groupIndentation
.
Se vengono forniti uno o più label
, questi vengono stampati prima senza l'indentazione aggiuntiva.
console.groupCollapsed()
Aggiunto in: v8.5.0
Un alias per console.group()
.
console.groupEnd()
Aggiunto in: v8.5.0
Diminuisce l'indentazione delle righe successive di spazi per la lunghezza di groupIndentation
.
console.info([data][, ...args])
Aggiunto in: v0.1.100
La funzione console.info()
è un alias per console.log()
.
console.log([data][, ...args])
Aggiunto in: v0.1.100
Stampa su stdout
con un newline. Possono essere passati argomenti multipli, con il primo utilizzato come messaggio principale e tutti gli altri utilizzati come valori di sostituzione in modo simile a printf(3)
(gli argomenti sono tutti passati a util.format()
).
const count = 5;
console.log('count: %d', count);
// Prints: count: 5, to stdout
console.log('count:', count);
// Prints: count: 5, to stdout
Vedi util.format()
per maggiori informazioni.
console.table(tabularData[, properties])
Aggiunto in: v10.0.0
tabularData
<any>properties
<string[]> Proprietà alternative per la costruzione della tabella.
Prova a costruire una tabella con le colonne delle proprietà di tabularData
(o utilizza properties
) e le righe di tabularData
e la registra. Ricade semplicemente nella registrazione dell'argomento se non può essere analizzato come tabulare.
// Questi non possono essere analizzati come dati tabulari
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])
Aggiunto in: v0.1.104
label
<stringa> Predefinito:'default'
Avvia un timer che può essere utilizzato per calcolare la durata di un'operazione. I timer sono identificati da una label
univoca. Usa la stessa label
quando chiami console.timeEnd()
per fermare il timer e mostrare il tempo trascorso in unità di tempo adatte su stdout
. Per esempio, se il tempo trascorso è 3869ms, console.timeEnd()
mostrerà "3.869s".
console.timeEnd([label])
[Cronologia]
Versione | Modifiche |
---|---|
v13.0.0 | Il tempo trascorso è mostrato con un'unità di tempo adatta. |
v6.0.0 | Questo metodo non supporta più chiamate multiple che non corrispondono a singole chiamate console.time() ; vedi sotto per i dettagli. |
v0.1.104 | Aggiunto in: v0.1.104 |
label
<stringa> Predefinito:'default'
Ferma un timer che era stato precedentemente avviato chiamando console.time()
e stampa il risultato su stdout
:
console.time('un-sacco-di-cose');
// Fai un sacco di cose.
console.timeEnd('un-sacco-di-cose');
// Stampa: un-sacco-di-cose: 225.438ms
console.timeLog([label][, ...data])
Aggiunto in: v10.7.0
label
<stringa> Predefinito:'default'
...data
<qualunque>
Per un timer che era stato precedentemente avviato chiamando console.time()
, stampa il tempo trascorso e altri argomenti data
su stdout
:
console.time('processo');
const value = expensiveProcess1(); // Restituisce 42
console.timeLog('processo', value);
// Stampa "processo: 365.227ms 42".
doExpensiveProcess2(value);
console.timeEnd('processo');
console.trace([message][, ...args])
Aggiunto in: v0.1.104
message
<qualunque>...args
<qualunque>
Stampa su stderr
la stringa 'Trace: '
, seguita dal messaggio formattato con util.format()
e la stack trace alla posizione corrente nel codice.
console.trace('Mostrami');
// Stampa: (la stack trace varierà in base a dove trace è chiamato)
// Trace: Mostrami
// 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])
Aggiunto in: v0.1.100
La funzione console.warn()
è un alias per console.error()
.
Metodi solo per l'Inspector
I seguenti metodi sono esposti dal motore V8 nell'API generale ma non mostrano nulla a meno che non vengano utilizzati in combinazione con l'inspector (flag --inspect
).
console.profile([label])
Aggiunto in: v8.0.0
label
<string>
Questo metodo non mostra nulla a meno che non venga utilizzato nell'inspector. Il metodo console.profile()
avvia un profilo CPU JavaScript con un'etichetta opzionale fino a quando non viene chiamato console.profileEnd()
. Il profilo viene quindi aggiunto al pannello Profile dell'inspector.
console.profile('MyLabel');
// Some code
console.profileEnd('MyLabel');
// Adds the profile 'MyLabel' to the Profiles panel of the inspector.
console.profileEnd([label])
Aggiunto in: v8.0.0
label
<string>
Questo metodo non mostra nulla a meno che non venga utilizzato nell'inspector. Interrompe la sessione di profilazione CPU JavaScript corrente, se ne è stata avviata una, e stampa il rapporto nel pannello Profiles dell'inspector. Vedi console.profile()
per un esempio.
Se questo metodo viene chiamato senza un'etichetta, viene interrotto il profilo avviato più recentemente.
console.timeStamp([label])
Aggiunto in: v8.0.0
label
<string>
Questo metodo non mostra nulla a meno che non venga utilizzato nell'inspector. Il metodo console.timeStamp()
aggiunge un evento con l'etichetta 'label'
al pannello Timeline dell'inspector.