Edited at

(初心者向け) Node.js コンソール (console) の使い方

More than 1 year has passed since last update.

v8.9.1LTS 対応


概要

console はグローバルなオブジェクトで、デバッグのためのシンプルなコンソール機能を提供する。



  • new Console(stdout[, stderr]) : 新しい Console オブジェクトを作成する。


  • console.assert(value[, message][, ...args]) : シンプルな Assertion テストを提供する。


  • console.clear() : 可能ならコンソール画面をクリアする。


  • console.count([label]) : label の内部カウンターを管理する。


  • console.countReset([label = 'default']) : label の内部カウンターをリセットする。


  • console.dir(obj[, options]) : util.inspect() を使って obj の文字列表現を表示する。


  • console.error([data][, ...args]) : stderr に出力する。


  • console.group([...label]) : 出力のときに、インデントを増やす。groupCollapsed() も同様。


  • console.groupEnd() : 出力のときに、インデントを減らす。


  • console.info([data][, ...args]) : console.log() と同じ。stdout へ出力する。


  • console.log([data][, ...args]) : stdout へ出力する。


  • console.time(label) : label に対応するユニークなタイマーを起動する。(実行時間の計測に使用)


  • console.timeEnd(label) : label に対応するユニークなタイマーを停止し、停止までの時間を表示する。


  • console.trace([message][, ...args]) : stderr に 'Trace : ' に続けてメッセージとスタックトレースを表示する。


使用例


変数の値を表示するには

console.log(data, arg1, arg2, ...) で data 部分にフォーマットを指定できるので、変数 arg1, arg2, ... を見やすくフォーマット化して stdout へ出力できる。console.info() も同様に使用可能。

書式化文字列の指定方法は util.format(format[, ...args]) と同様。よく使うものを下に示す。


  • %s : 文字列

  • %d : 数 (浮動小数点数なども含む)

  • %i : 整数

  • %f : 浮動小数点数

  • %j : JSON

  • %o : オブジェクト (JavaScript の標準オブジェクト表現)

const count = 5;

console.log('count: %d', count);
// stdout へ出力: count: 5
console.log('count:', count);
// stdout へ出力: count: 5
console.info('count:', count);
// stdout へ出力: count: 5


標準エラー出力に文字列を表示するには

console.log() の代わりに console.error() を使うと stderr に文字列が出力される。

const code = 5;

console.error('error #%d', code);
// stderr へ出力: error #5
console.error('error', code);
// stderr へ出力: error 5


インデントを付けて表示するには

/* インデントを付けて表示 */

console.log('console.group(string)');
console.group('group() ..');
// インデント中
console.log('1 indented');
// インデント中
console.log('2 indented');
console.groupEnd();
// インデント解除
console.log('.. groupEnd()');

実行例

PS C:\Console> node group.js

console.group(string)

group() ..

1 indented

2 indented

.. groupEnd()

PS C:\Console>


変数の値をチェックするには (Assert テスト)

console.assert() を使うと変数の値が期待通りかをチェックできる。期待値と異なる場合は、AssertionError 例外が発生する。

/* console.assert() : シンプルな Assert テスト */

var n = 0;
console.assert(n > 0, 'Error: n は正でなければならない。n = %d', n);
n++;
console.assert(n > 0, 'Error: n は正でなければならない。n = %d', n);

実行例

最初の assert() で条件を満足しないので AssertionError 例外が発生する。最初の assert() をコメントアウトすると、条件を満足するため、例外は発生しない。

PS C:\Console> node assert.js

assert.js:42

throw new errors.AssertionError({

^



AssertionError [ERR_ASSERTION]: Error: n は正でなければならない。n = 0

at Console.assert (console.js:188:23)

at Object. (C:\workspace\node\NodeAPI\Console\assert.js:3:9)

at Module._compile (module.js:635:30)

at Object.Module._extensions..js (module.js:646:10)

at Module.load (module.js:554:32)

at tryModuleLoad (module.js:497:12)

at Function.Module._load (module.js:489:3)

at Function.Module.runMain (module.js:676:10)

at startup (bootstrap_node.js:187:16)

at bootstrap_node.js:608:3

PS C:\Console>


ログをファイルに出力するには

console.Console(out, err) クラスを使うと独自のコンソールオブジェクトを作成できる。この出力先をファイルにすることで、ファイルへログを出力できる。

/* ログをファイルへ出力する。*/

const fs = require('fs');
// 標準出力をリダイレクト
const out = fs.createWriteStream('info.log');
// 標準エラー出力をリダイレクト
const err = fs.createWriteStream('error.log');
// カスタマイズされた独自コンソールオブジェクトを作成する。
const logger = new console.Console(out, err);
// 実際にログを出力してみる。
logger.log('アプリ開始');
logger.log('初期化成功');
logger.error(new Error('障害検出'));
logger.log('アプリ終了');

上のサンプルで info.log と error.log へ出力された内容 (コードは UTF-8 になる) は次のようになる。

info.log



アプリ開始

初期化成功

アプリ終了




error.log

Error: 障害検出

at Object. (C:\workspace\node\NodeAPI\Console\logging.js:8:14)

at Module._compile (module.js:635:30)

at Object.Module._extensions..js (module.js:646:10)

at Module.load (module.js:554:32)

at tryModuleLoad (module.js:497:12)

at Function.Module._load (module.js:489:3)

at Function.Module.runMain (module.js:676:10)

at startup (bootstrap_node.js:187:16)

at bootstrap_node.js:608:3


ループ回数を調べるには

console.count() を使うとループ回数を確認できる。下のサンプルでは使っていないが、カウンタのリセットは、countReset() で行うことができる。

/* ループ回数の確認 */

console.log('count 開始');
var i = 10;
while (i >= 0) {
i--;
console.count('while');
}
console.log("count 終わり");

実行例

PS C:\Console> node count.js

count 開始

while: 1

while: 2

while: 3

while: 4

while: 5

while: 6

while: 7

while: 8

while: 9

while: 10

while: 11

count 終わり

PS C:\Console>


実行時間を調べるには

console.time() と console.timeEnd() を使うと、時間のかかる処理の実行時間を調べることができる。

/* ループの時間を計測 */

// 測定開始
console.time('time1000000');
var i = 1000000;
while (i != 0) {
2**10;
i--;
}
// 測定終了
console.timeEnd('time1000000');

実行例



PS C:\Console> node timer.js

time1000000: 12.399ms

PS C:\Console>


スタックトレースを表示するには

console.trace() を使うと、スタックトレースを表示できる。

/* スタックトレースの表示 */

console.trace('Show me');

実行例



PS C:\Console> node trace.js

Trace: Show me

at Object. (C:\Console\trace.js:2:9)

at Module._compile (module.js:635:30)

at Object.Module._extensions..js (module.js:646:10)

at Module.load (module.js:554:32)

at tryModuleLoad (module.js:497:12)

at Function.Module._load (module.js:489:3)

at Function.Module.runMain (module.js:676:10)

at startup (bootstrap_node.js:187:16)

at bootstrap_node.js:608:3

PS C:\Console>


オブジェクトの内容を表示するには

console.dir() を使うと、オブジェクトの内容を見やすく表示できる。

/* オブジェクトの表示 */

console.dir(module, {depth:3});

実行例



PS C:\Console> node dir.js

Module {

id: '.',

exports: {},

parent: null,

filename: 'C:\\Console\\dir.js',

loaded: false,

children: [],

paths:

[ 'C:\\Console\\node_modules',

'C:\\workspace\\node\\NodeAPI\\node_modules',

'C:\\workspace\\node\\node_modules',

'C:\\workspace\\node_modules',

'C:\\node_modules' ] }

PS C:\Console>

終わり