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 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 usati per scrivere in qualsiasi stream di Node.js. - Un'istanza
console
globale configurata per scrivere inprocess.stdout
eprocess.stderr
. Laconsole
globale può essere usata senza chiamarerequire('node:console')
.
Attenzione: I metodi dell'oggetto console globale non sono né costantemente sincroni come le API del browser a cui assomigliano, né costantemente asincroni come tutti gli altri stream di 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. Vedi la nota sull'I/O del processo per maggiori informazioni.
Esempio di utilizzo della console
globale:
console.log('ciao mondo')
// Stampa: ciao mondo, su stdout
console.log('ciao %s', 'mondo')
// Stampa: ciao mondo, su stdout
console.error(new Error('Oops, è successo qualcosa di brutto'))
// Stampa messaggio di errore e stack trace su stderr:
// Error: Oops, è successo qualcosa di brutto
// 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(`Pericolo ${name}! Pericolo!`)
// Stampa: Pericolo Will Robinson! Pericolo!, su stderr
Esempio di utilizzo della classe Console
:
const out = getStreamSomehow()
const err = getStreamSomehow()
const myConsole = new console.Console(out, err)
myConsole.log('ciao mondo')
// Stampa: ciao mondo, su out
myConsole.log('ciao %s', 'mondo')
// Stampa: ciao mondo, su out
myConsole.error(new Error('Oops, è successo qualcosa di brutto'))
// Stampa: [Error: Oops, è successo qualcosa di brutto], su err
const name = 'Will Robinson'
myConsole.warn(`Pericolo ${name}! Pericolo!`)
// Stampa: Pericolo Will Robinson! Pericolo!, su err
Classe: Console
[Cronologia]
Versione | Cambiamenti |
---|---|
v8.0.0 | Gli errori che si verificano durante la scrittura nei flussi sottostanti ora verranno ignorati per impostazione predefinita. |
La classe Console
può essere utilizzata per creare un logger semplice con flussi di output configurabili ed è possibile accedervi tramite 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 | Cambiamenti |
---|---|
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 l'indentazione del gruppo. Predefinito:2
.
Crea una nuova Console
con una o due istanze di flussi scrivibili. stdout
è un flusso scrivibile per stampare l'output di log o informazioni. stderr
viene utilizzato per l'output di avvisi o errori. Se stderr
non viene fornito, stdout
viene utilizzato per stderr
.
import { createWriteStream } from 'node:fs'
import { Console } from 'node:console'
// In alternativa
// const { Console } = console;
const output = createWriteStream('./stdout.log')
const errorOutput = createWriteStream('./stderr.log')
// Logger semplice personalizzato
const logger = new Console({ stdout: output, stderr: errorOutput })
// Usalo come console
const count = 5
logger.log('count: %d', count)
// In stdout.log: count 5
const fs = require('node:fs')
const { Console } = require('node:console')
// In alternativa
// const { Console } = console;
const output = fs.createWriteStream('./stdout.log')
const errorOutput = fs.createWriteStream('./stderr.log')
// Logger semplice personalizzato
const logger = new Console({ stdout: output, stderr: errorOutput })
// Usalo come console
const count = 5
logger.log('count: %d', count)
// In stdout.log: count 5
La console
globale è una speciale Console
il cui output viene inviato a process.stdout
e process.stderr
. È equivalente alla chiamata:
new Console({ stdout: process.stdout, stderr: process.stderr })
console.assert(value[, ...message])
[Cronologia]
Versione | Cambiamenti |
---|---|
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 usando util.format()
.
Se value
è truthy, non succede nulla.
console.assert(true, 'non fa nulla')
console.assert(false, 'Ops %s non ha funzionato', 'ha')
// Assertion failed: Ops non ha funzionato
console.assert()
// Assertion failed
console.clear()
Aggiunto in: v8.3.0
Quando stdout
è un TTY, chiamare 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 terminali. Per la maggior parte dei sistemi operativi Linux, console.clear()
opera in modo simile al comando shell clear
. Su Windows, console.clear()
cancellerà solo l'output nella viewport del terminale corrente per il binario di 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
e invia a stdout
il numero di volte in cui console.count()
è stato chiamato con la label
specificata.
> 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
<string> 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 |
La funzione console.debug()
è un alias per console.log()
.
console.dir(obj[, options])
Aggiunto in: v0.1.101
obj
<any>options
<Object>showHidden
<boolean> Setrue
, verranno mostrate anche le proprietà non enumerabili e simboliche dell'oggetto. Predefinito:false
.depth
<number> Indica autil.inspect()
quante volte ricorrere durante la formattazione dell'oggetto. Ciò è utile per ispezionare oggetti grandi e complessi. Per farlo ricorrere all'infinito, passarenull
. Predefinito:2
.colors
<boolean> 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 ignora 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 in modo simile 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 ciascun argomento e i valori delle stringhe 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 per primi 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 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 count = 5
console.log('count: %d', count)
// Stampa: count: 5, su stdout
console.log('count:', count)
// Stampa: count: 5, su 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 usa properties
) e le righe di tabularData
e registrarla. Ricade semplicemente sulla registrazione dell'argomento se non può essere analizzato come tabellare.
// Questi non possono essere analizzati come dati tabellari
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
<string> Predefinito:'default'
Avvia un timer che può essere utilizzato per calcolare la durata di un'operazione. I timer sono identificati da una label
univoca. Utilizzare la stessa label
quando si chiama console.timeEnd()
per fermare il timer e restituire il tempo trascorso in unità di tempo appropriate a stdout
. Ad esempio, se il tempo trascorso è 3869ms, console.timeEnd()
visualizza "3.869s".
console.timeEnd([label])
[Cronologia]
Versione | Modifiche |
---|---|
v13.0.0 | Il tempo trascorso viene visualizzato con un'unità di tempo appropriata. |
v6.0.0 | Questo metodo non supporta più chiamate multiple che non corrispondono a singole chiamate console.time() ; vedere sotto per i dettagli. |
v0.1.104 | Aggiunto in: v0.1.104 |
label
<string> Predefinito:'default'
Arresta un timer che era stato precedentemente avviato chiamando console.time()
e stampa il risultato su stdout
:
console.time('bunch-of-stuff')
// Fai un sacco di cose.
console.timeEnd('bunch-of-stuff')
// Stampa: bunch-of-stuff: 225.438ms
console.timeLog([label][, ...data])
Aggiunto in: v10.7.0
Per un timer che era stato precedentemente avviato chiamando console.time()
, stampa il tempo trascorso e altri argomenti data
su stdout
:
console.time('process')
const value = expensiveProcess1() // Restituisce 42
console.timeLog('process', value)
// Stampa "process: 365.227ms 42".
doExpensiveProcess2(value)
console.timeEnd('process')
console.trace([message][, ...args])
Aggiunto in: v0.1.104
Stampa su stderr
la stringa 'Trace: '
, seguita dal messaggio formattato con util.format()
e dalla traccia dello stack alla posizione corrente nel codice.
console.trace('Show me')
// Stampa: (la traccia dello stack varierà in base a dove viene chiamata la traccia)
// Trace: Show me
// 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 visualizzano nulla se non utilizzati insieme all'inspector (flag --inspect
).
console.profile([label])
Aggiunto in: v8.0.0
label
<string>
Questo metodo non visualizza nulla se non 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')
// Alcune codice
console.profileEnd('MyLabel')
// Aggiunge il profilo 'MyLabel' al pannello Profiles dell'inspector.
console.profileEnd([label])
Aggiunto in: v8.0.0
label
<string>
Questo metodo non visualizza nulla se non utilizzato nell'inspector. Interrompe la sessione di profilazione della CPU JavaScript corrente, se ne è stata avviata una, e stampa il report nel pannello Profiles dell'inspector. Vedere console.profile()
per un esempio.
Se questo metodo viene chiamato senza un'etichetta, viene interrotto il profilo avviato più di recente.
console.timeStamp([label])
Aggiunto in: v8.0.0
label
<string>
Questo metodo non visualizza nulla se non utilizzato nell'inspector. Il metodo console.timeStamp()
aggiunge un evento con l'etichetta 'label'
al pannello Timeline dell'inspector.