Console#

安定性: 2 - Stable

ソースコード: lib/console.js

node:console モジュールは、Web ブラウザが提供する JavaScript コンソールの仕組みに似た、シンプルなデバッグコンソールを提供します。

このモジュールは2つの特定のコンポーネントをエクスポートします。

  • 任意の Node.js ストリームに書き込むために使用できる console.log()console.error()console.warn() などのメソッドを持つ Console クラス。
  • process.stdoutprocess.stderr に書き込むように設定されたグローバルな console インスタンス。グローバルな consolerequire('node:console') を呼び出さずに使用できます。

警告: グローバルコンソールオブジェクトのメソッドは、それが模倣しているブラウザ API のように一貫して同期的であるわけでも、他のすべての Node.js ストリームのように一貫して非同期的であるわけでもありません。コンソール関数の同期的/非同期的な動作に依存したいプログラムは、まずコンソールの背後にあるストリームの性質を把握する必要があります。これは、ストリームが基盤となるプラットフォームと現在のプロセスの標準ストリーム設定に依存するためです。詳細については、プロセス 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#

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)#

  • 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> | <Map> util.inspect() に渡されるオプションを指定します。オプションオブジェクト、または stdout と stderr で異なるオプションが必要な場合は、ストリームオブジェクトからオプションへの Map を指定できます。
    • groupIndentation <number> グループのインデントを設定します。デフォルト: 2

1つまたは2つの書き込み可能なストリームインスタンスを持つ新しい Console を作成します。stdout はログや情報出力を表示するための書き込み可能なストリームです。stderr は警告やエラー出力に使用されます。stderr が提供されない場合、stdoutstderr にも使用されます。

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 5const 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

グローバルな console は、出力が process.stdoutprocess.stderr に送信される特別な Console です。これは以下を呼び出すことと同等です。

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

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

  • value <any> truthy であるかをテストされる値。
  • ...message <any> value 以外のすべての引数はエラーメッセージとして使用されます。

console.assert() は、valuefalsy であるか、または省略された場合にメッセージを書き込みます。メッセージを書き込むだけで、それ以外の実行には影響を与えません。出力は常に "Assertion failed" で始まります。message が提供された場合、util.format() を使用してフォーマットされます。

valuetruthy の場合、何も起こりません。

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()#

stdout が TTY の場合、console.clear() を呼び出すと TTY のクリアを試みます。stdout が TTY でない場合、このメソッドは何も行いません。

console.clear() の具体的な動作は、オペレーティングシステムや端末の種類によって異なる場合があります。ほとんどの Linux オペレーティングシステムでは、console.clear()clear シェルコマンドと同様に動作します。Windows では、console.clear() は Node.js バイナリの現在のターミナルビューポートの出力のみをクリアします。

console.count([label])#

  • label <string> カウンターの表示ラベル。デフォルト: 'default'

label に固有の内部カウンターを維持し、与えられた labelconsole.count() が呼び出された回数を 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])#

  • label <string> カウンターの表示ラベル。デフォルト: 'default'

label に固有の内部カウンターをリセットします。

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

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

console.debug() 関数は console.log() のエイリアスです。

console.dir(obj[, options])#

  • 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)#

このメソッドは、受け取った引数を渡して console.log() を呼び出します。このメソッドは XML フォーマットを生成しません。

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

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])#

以降の行のインデントを groupIndentation の長さ分のスペースで増やします。

1つ以上の label が提供された場合、それらは追加のインデントなしで最初に出力されます。

console.groupCollapsed()#

console.group() のエイリアスです。

console.groupEnd()#

以降の行のインデントを groupIndentation の長さ分のスペースで減らします。

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

console.info() 関数は console.log() のエイリアスです。

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

stdout に改行付きで出力します。複数の引数を渡すことができ、最初の引数がプライマリメッセージとして、追加の引数はすべて printf(3) に似た置換値として使用されます (すべての引数は util.format() に渡されます)。

const count = 5;
console.log('count: %d', count);
// Prints: count: 5, to stdout
console.log('count:', count);
// Prints: count: 5, to stdout 

詳細については util.format() を参照してください。

console.table(tabularData[, properties])#

  • tabularData <any>
  • properties <string[]> テーブルを構築するための代替プロパティ。

tabularData のプロパティの列 (または properties を使用) と tabularData の行でテーブルを構築し、それをログに出力しようとします。表形式として解析できない場合は、引数をログに出力するだけにフォールバックします。

// These can't be parsed as tabular data
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])#

  • label <string> デフォルト: 'default'

操作の持続時間を計算するために使用できるタイマーを開始します。タイマーは一意の label で識別されます。タイマーを停止し、経過時間を適切な時間単位で stdout に出力するには、console.timeEnd() を呼び出すときに同じ label を使用します。たとえば、経過時間が 3869ms の場合、console.timeEnd() は "3.869s" を表示します。

console.timeEnd([label])#

  • label <string> デフォルト: 'default'

以前に console.time() を呼び出して開始されたタイマーを停止し、結果を stdout に出力します。

console.time('bunch-of-stuff');
// Do a bunch of stuff.
console.timeEnd('bunch-of-stuff');
// Prints: bunch-of-stuff: 225.438ms 

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

以前に console.time() を呼び出して開始されたタイマーについて、経過時間とその他の data 引数を stdout に出力します。

console.time('process');
const value = expensiveProcess1(); // Returns 42
console.timeLog('process', value);
// Prints "process: 365.227ms 42".
doExpensiveProcess2(value);
console.timeEnd('process'); 

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

stderr に文字列 'Trace: ' を出力し、その後に util.format() でフォーマットされたメッセージとコードの現在位置へのスタックトレースを出力します。

console.trace('Show me');
// Prints: (stack trace will vary based on where trace is called)
//  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])#

console.warn() 関数は console.error() のエイリアスです。

インスペクター専用メソッド#

以下のメソッドは V8 エンジンによって一般 API で公開されていますが、インスペクター (--inspect フラグ) と併用しない限り何も表示しません。

console.profile([label])#

このメソッドはインスペクターで使用しない限り何も表示しません。console.profile() メソッドは、console.profileEnd() が呼び出されるまで、オプションのラベル付きで JavaScript CPU プロファイルを開始します。その後、プロファイルはインスペクターの Profile パネルに追加されます。

console.profile('MyLabel');
// Some code
console.profileEnd('MyLabel');
// Adds the profile 'MyLabel' to the Profiles panel of the inspector. 

console.profileEnd([label])#

このメソッドはインスペクターで使用しない限り何も表示しません。開始されている場合、現在の JavaScript CPU プロファイリングセッションを停止し、レポートをインスペクターの Profiles パネルに出力します。例については console.profile() を参照してください。

このメソッドがラベルなしで呼び出された場合、最も最近開始されたプロファイルが停止されます。

console.timeStamp([label])#

このメソッドはインスペクターで使用しない限り何も表示しません。console.timeStamp() メソッドは、ラベル 'label' のイベントをインスペクターの Timeline パネルに追加します。