Console
ソースコード: lib/console.js
node:console
モジュールは、ウェブブラウザが提供する JavaScript コンソールメカニズムに類似した、シンプルなデバッグコンソールを提供します。
このモジュールは、次の 2 つの特定のコンポーネントをエクスポートします。
console.log()
,console.error()
,console.warn()
のようなメソッドを持つConsole
クラス。Node.js ストリームに書き込むために使用できます。process.stdout
とprocess.stderr
に書き込むように設定されたグローバルconsole
インスタンス。グローバルconsole
は、require('node:console')
を呼び出さずに使用できます。
警告: グローバル console オブジェクトのメソッドは、それらが似ているブラウザの API のように一貫して同期的なものでも、他のすべての Node.js ストリームのように一貫して非同期的なものでもありません。console 関数の同期/非同期の動作に依存したいプログラムは、まず console のバッキングストリームの性質を把握する必要があります。これは、ストリームが現在のプロセスの基盤となるプラットフォームと標準ストリーム構成に依存するためです。詳細については、プロセス I/O に関する注意を参照してください。
グローバルconsole
を使用した例:
console.log('hello world')
// Prints: hello world, to stdout
console.log('hello %s', 'world')
// Prints: hello world, to stdout
console.error(new Error('Whoops, something bad happened'))
// Prints error message and stack trace to 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!`)
// Prints: Danger Will Robinson! Danger!, to stderr
Console
クラスを使用した例:
const out = getStreamSomehow()
const err = getStreamSomehow()
const myConsole = new console.Console(out, err)
myConsole.log('hello world')
// Prints: hello world, to out
myConsole.log('hello %s', 'world')
// Prints: hello world, to out
myConsole.error(new Error('Whoops, something bad happened'))
// Prints: [Error: Whoops, something bad happened], to err
const name = 'Will Robinson'
myConsole.warn(`Danger ${name}! Danger!`)
// Prints: Danger Will Robinson! Danger!, to err
クラス: Console
[履歴]
バージョン | 変更点 |
---|---|
v8.0.0 | 基盤となるストリームへの書き込み中に発生したエラーは、デフォルトで無視されるようになりました。 |
Console
クラスは、設定可能な出力ストリームを持つシンプルなロガーを作成するために使用でき、require('node:console').Console
またはconsole.Console
(またはそれらの分割代入されたもの)を使用してアクセスできます。
import { Console } from 'node:console'
const { Console } = require('node:console')
const { Console } = console
new Console(stdout[, stderr][, ignoreErrors])
new Console(options)
[履歴]
バージョン | 変更点 |
---|---|
v14.2.0, v12.17.0 | groupIndentation オプションが導入されました。 |
v11.7.0 | inspectOptions オプションが導入されました。 |
v10.0.0 | Console コンストラクターがoptions 引数をサポートするようになり、colorMode オプションが導入されました。 |
v8.0.0 | ignoreErrors オプションが導入されました。 |
options
<Object>stdout
<stream.Writable>stderr
<stream.Writable>ignoreErrors
<boolean> 基盤となるストリームへの書き込み時にエラーを無視します。デフォルト:true
。colorMode
<boolean> | <string> このConsole
インスタンスの色サポートを設定します。true
に設定すると、値を検査する際に色付けが有効になります。false
に設定すると、値を検査する際に色付けが無効になります。'auto'
に設定すると、色サポートはisTTY
プロパティの値と、それぞれのストリームでgetColorDepth()
によって返される値に依存します。inspectOptions.colors
も設定されている場合、このオプションは使用できません。デフォルト:'auto'
。inspectOptions
<Object>util.inspect()
に渡されるオプションを指定します。groupIndentation
<number> グループインデントを設定します。デフォルト:2
。
1 つまたは 2 つの書き込み可能ストリームインスタンスを持つ新しいConsole
を作成します。stdout
はログまたは情報出力を印刷するための書き込み可能ストリームです。stderr
は警告またはエラー出力に使用されます。stderr
が提供されない場合、stdout
がstderr
に使用されます。
import { createWriteStream } from 'node:fs'
import { Console } from 'node:console'
// あるいは
// const { Console } = console;
const output = createWriteStream('./stdout.log')
const errorOutput = createWriteStream('./stderr.log')
// カスタムのシンプルなロガー
const logger = new Console({ stdout: output, stderr: errorOutput })
// consoleのように使用する
const count = 5
logger.log('count: %d', count)
// stdout.log内: count 5
const fs = require('node:fs')
const { Console } = require('node:console')
// あるいは
// const { Console } = console;
const output = fs.createWriteStream('./stdout.log')
const errorOutput = fs.createWriteStream('./stderr.log')
// カスタムのシンプルなロガー
const logger = new Console({ stdout: output, stderr: errorOutput })
// consoleのように使用する
const count = 5
logger.log('count: %d', count)
// stdout.log内: count 5
グローバルなconsole
は、process.stdout
とprocess.stderr
に出力が送信される特別なConsole
です。これは、以下を呼び出すのと同等です。
new Console({ stdout: process.stdout, stderr: process.stderr })
console.assert(value[, ...message])
[履歴]
バージョン | 変更点 |
---|---|
v10.0.0 | 実装が仕様に準拠し、例外をスローしなくなりました。 |
v0.1.101 | v0.1.101 で追加されました。 |
console.assert()
は、value
が falsy であるか、省略された場合にメッセージを書き込みます。メッセージを書き込むだけで、それ以外の実行には影響しません。出力は常に "Assertion failed"
で始まります。提供されている場合、message
は util.format()
を使用してフォーマットされます。
value
が truthy である場合、何も起こりません。
console.assert(true, 'does nothing')
console.assert(false, 'Whoops %s work', "didn't")
// Assertion failed: Whoops didn't work
console.assert()
// Assertion failed
console.clear()
追加: v8.3.0
stdout
が TTY の場合、console.clear()
を呼び出すと、TTY のクリアが試行されます。stdout
が TTY でない場合、このメソッドは何も行いません。
console.clear()
の具体的な動作は、オペレーティングシステムやターミナルの種類によって異なる場合があります。ほとんどの Linux オペレーティングシステムでは、console.clear()
は clear
シェルコマンドと同様に動作します。Windows では、console.clear()
は Node.js バイナリの現在のターミナルビューポートの出力のみをクリアします。
console.count([label])
追加: v8.3.0
label
<string> カウンターの表示ラベル。デフォルト:'default'
。
label
に固有の内部カウンターを維持し、console.count()
が指定された label
で呼び出された回数を stdout
に出力します。
> 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])
追加: v8.3.0
label
<string> カウンターの表示ラベル。デフォルト:'default'
。
label
に固有の内部カウンターをリセットします。
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>
console.debug(data[, ...args])
[履歴]
バージョン | 変更点 |
---|---|
v8.10.0 | console.debug が console.log のエイリアスになりました。 |
v8.0.0 | 追加: v8.0.0 |
console.debug()
関数は、console.log()
のエイリアスです。
console.dir(obj[, options])
追加: v0.1.101
obj
<any>options
<Object>showHidden
<boolean>true
の場合、オブジェクトの列挙不可およびシンボルプロパティも表示されます。デフォルト:false
。depth
<number> オブジェクトの書式設定中にutil.inspect()
が再帰する回数を指定します。これは、大規模で複雑なオブジェクトを検査する場合に役立ちます。無限に再帰させるには、null
を渡します。デフォルト:2
。colors
<boolean>true
の場合、出力は ANSI カラーコードでスタイル設定されます。色はカスタマイズ可能です。util.inspect()
の色のカスタマイズ を参照してください。デフォルト:false
。
obj
に対して util.inspect()
を使用し、結果の文字列を stdout
に出力します。この関数は obj
で定義されたカスタムの inspect()
関数をバイパスします。
console.dirxml(...data)
[履歴]
バージョン | 変更点 |
---|---|
v9.3.0 | console.dirxml は、引数に対して console.log を呼び出すようになりました。 |
v8.0.0 | v8.0.0 で追加 |
...data
<any>
このメソッドは、受け取った引数を渡して console.log()
を呼び出します。このメソッドは、XML 形式の出力を生成しません。
console.error([data][, ...args])
追加: v0.1.100
改行付きで stderr
に出力します。複数の引数を渡すことができ、最初の引数が主要なメッセージとして使用され、追加の引数は printf(3)
と同様に置換値として使用されます(すべての引数はutil.format()
に渡されます)。
const code = 5
console.error('error #%d', code)
// Prints: error #5, to stderr
console.error('error', code)
// Prints: error 5, to stderr
最初の文字列に書式要素(例:%d
)が見つからない場合、util.inspect()
が各引数に対して呼び出され、結果の文字列値が連結されます。詳細については、util.format()
を参照してください。
console.group([...label])
追加: v8.5.0
...label
<any>
後続の行のインデントを groupIndentation
の長さだけスペースで増やします。
1 つ以上の label
が指定されている場合は、追加のインデントなしでそれらが最初に印刷されます。
console.groupCollapsed()
追加: v8.5.0
console.group()
のエイリアスです。
console.groupEnd()
追加: v8.5.0
後続の行のインデントを groupIndentation
の長さだけスペースで減らします。
console.info([data][, ...args])
追加: v0.1.100
console.info()
関数は console.log()
のエイリアスです。
console.log([data][, ...args])
追加: v0.1.100
改行付きで stdout
に出力します。複数の引数を渡すことができ、最初の引数はプライマリメッセージとして使用され、追加の引数は printf(3)
と同様の置換値として使用されます (引数はすべて util.format()
に渡されます)。
const count = 5
console.log('count: %d', count)
// stdout に: count: 5 と出力
console.log('count:', count)
// stdout に: count: 5 と出力
詳細については util.format()
を参照してください。
console.table(tabularData[, properties])
追加: v10.0.0
tabularData
<any>properties
<string[]> テーブルを構成するための代替プロパティ。
tabularData
のプロパティの列 (または properties
を使用) と tabularData
の行でテーブルを構築しようとし、それをログに記録します。表形式として解析できない場合は、引数をログに記録するだけになります。
// これらは表形式データとして解析できません
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])
追加: v0.1.104
label
<string> デフォルト:'default'
操作の実行時間を計算するために使用できるタイマーを開始します。タイマーは一意のlabel
によって識別されます。タイマーを停止し、経過時間を適切な時間単位でstdout
に出力するには、console.timeEnd()
を呼び出すときに同じlabel
を使用します。例えば、経過時間が 3869 ミリ秒の場合、console.timeEnd()
は「3.869s」と表示します。
console.timeEnd([label])
[履歴]
バージョン | 変更点 |
---|---|
v13.0.0 | 経過時間が適切な時間単位で表示されるようになりました。 |
v6.0.0 | このメソッドは、個々のconsole.time() 呼び出しに対応しない複数の呼び出しをサポートしなくなりました。詳細は下記を参照してください。 |
v0.1.104 | 追加: v0.1.104 |
label
<string> デフォルト:'default'
console.time()
を呼び出すことによって以前に開始されたタイマーを停止し、結果をstdout
に出力します。
console.time('bunch-of-stuff')
// たくさんの処理を実行
console.timeEnd('bunch-of-stuff')
// 出力: bunch-of-stuff: 225.438ms
console.timeLog([label][, ...data])
追加: v10.7.0
console.time()
を呼び出すことによって以前に開始されたタイマーの場合、経過時間とその他のdata
引数をstdout
に出力します。
console.time('process')
const value = expensiveProcess1() // 42 を返します
console.timeLog('process', value)
// "process: 365.227ms 42" を出力します。
doExpensiveProcess2(value)
console.timeEnd('process')
console.trace([message][, ...args])
追加: v0.1.104
stderr
に文字列 'Trace: '
を出力し、その後、util.format()
でフォーマットされたメッセージと、コード内の現在位置へのスタックトレースを出力します。
console.trace('Show me')
// 出力: (スタックトレースはトレースが呼び出された場所によって異なります)
// 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])
追加: v0.1.100
console.warn()
関数は、console.error()
のエイリアスです。
インスペクター専用メソッド
以下のメソッドは、一般的な API で V8 エンジンによって公開されていますが、インスペクター (--inspect
フラグ) と組み合わせて使用しない限り、何も表示しません。
console.profile([label])
追加: v8.0.0
label
<string>
このメソッドは、インスペクターで使用しない限り、何も表示しません。 console.profile()
メソッドは、オプションのラベル付きで JavaScript CPU プロファイルを開始し、console.profileEnd()
が呼び出されるまで続きます。プロファイルはインスペクターの プロファイル パネルに追加されます。
console.profile('MyLabel')
// 何らかのコード
console.profileEnd('MyLabel')
// プロファイル 'MyLabel' がインスペクターのプロファイルパネルに追加されます。
console.profileEnd([label])
追加: v8.0.0
label
<string>
このメソッドは、インスペクターで使用しない限り、何も表示しません。開始された JavaScript CPU プロファイリングセッションを停止し、レポートをインスペクターの プロファイル パネルに出力します。例については、console.profile()
を参照してください。
このメソッドがラベルなしで呼び出された場合、最後に開始されたプロファイルが停止されます。
console.timeStamp([label])
追加: v8.0.0
label
<string>
このメソッドは、インスペクターで使用しない限り、何も表示しません。 console.timeStamp()
メソッドは、ラベル 'label'
を持つイベントをインスペクターの タイムライン パネルに追加します。