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>
終わり