LoginSignup
68
63

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-11-11

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>

終わり

68
63
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
68
63