consoleオブジェクト
フロントの開発をしてる時、いつもお世話になるconsole.log()
先日、console.logでフォーマット指定子を使う!という記事を書きましたが、今回はconsole.log()
以外のconsole.XXX()
について、紹介したいと思います。
一覧
関数名 | 用途 | ○:おすすめ △:非推奨、 非標準 |
---|---|---|
assert | 引数の妥当性チェック | |
clear | コンソールをクリア | |
count | 回数をカウント | |
debug | デバッグログ出力 | ○ |
dir | オブジェクト出力 | |
dirxml | オブジェクト出力 ※XML形式 |
|
error | エラーログ出力 | |
exception | errorの別名 | △ |
group | ログをグループ化 | |
groupCollapsed | ログをグループ化 ※折りたたんだ状態で出力 |
○ |
groupEnd | グループ化終了 | |
info | 出力ログに!マーク付与 | |
log | 通常のログ出力 | ○ |
profile | プロファイル開始 | △ |
profileEnd | プロファイル停止 | △ |
table | 表形式でログ出力 | ○ |
time | 処理時間計測 | |
timeEnd | 処理時間計測 | |
timeLog | 処理時間計測 | |
timeStamp | タイムラインにマーカー追加 | △ |
trace | スタックトレース出力 | ○ |
warn | 警告ログ出力 | |
(2020/05時点) | ||
※MDN日本語版と英語版で情報に差異があるのですが、更新日が新しい英語版を基にしています。 |
動作確認
それでは、それぞれ動作を見ていきます。
ブラウザはChromeです。
一部Chromeでは対応しておらず、他のブラウザを使用している箇所は都度明記しています。
console.assert()
第1引数を評価してfalseの場合、第2引数のメッセージを出力します。
trueの場合は、何も出力されません。
console.clear()
console.count(), console.countReset()
第1引数の値をラベルとして、呼ばれた回数をカウントし出力します。
console.dir(), console.dirxml()
console.dir()
はDOMをJSON形式で、
console.dirxml()
はXML形式で、出力してくれます。
console.log(), console.info(), console.warn(), console.error(), console.debug()
標準的なログを出力します。
関数によって、それぞれログレベルが違います。
Chromeでは、console.log()
とconsole.info()
が同じでしたので、Safariでも確認しました。
また、一部で「console.debug()
はChromeで表示されない」との記事を見かけますが、おそらくログの出力レベルがDefaultになっているのだと思います。
console.debug()
はレベルVerboseですが、DefaultではVerboseにチェックがついていないので注意が必要です。
ログをconsole.debug()
で出力して、フィルタをVerboseレベルでかければ、必要なログだけ抽出して確認できるので、おすすめです。
また、フォーマット指定子(置換文字列)を使用して、出力フォーマットを整形することもできます。
こちらの記事で紹介していますので、参考にしてみてください。
console.logでフォーマット指定子を使う!
console.exception()
一応MDNの一覧ページには載ってますが、個別のページは削除されているようです。
console.error()
を使いましょう。
console.group(), console.groupCollapsed(), console.groupEnd()
ログをグループ化して出力します。
console.groupCollapsed()
だと初期表示の時に、折りたたまれた状態で出力されます。
(個人的にはgroupCollapsedのほうが好きです)
console.profile(), console.profileEnd()
プロファイルを記録して、各関数の処理性能の計測などができます。
console.table()
第2引数に値を設定すると、出力するプロパティを絞ることもできます。
console.time(), console.timeEnd(), console.timeLog()
処理時間を計測できます。
console.time()
で計測を開始し、
console.timeLog()
で途中経過を出力し、
console.timeEnd()
で計測時間を出力し、計測を止めます。
console.timeStamp()
開発者ツールでPerformanceを計測している間だけ有効になります。
何のために使うのかよくわかっていないです。
めちゃくちゃ小さく表示されるので、ずっと見つからず何も起こらない…と思って、何度もやり直しました。
この画面ショット撮るために2日かかりました…すみません、愚痴です。
そもそも古い記事だと開発者ツールのTimelineパネルにTimeStampが表示されるのですが、今はPerformanceパネルに集約されているようです。
下記の記事に出会わなければ、見つけられなかったです。
進化を続けるChrome DevToolsの最新情報 2017
console.trace()
スタックトレースを出力し、処理の流れを確認できます。
「この処理どこから呼ばれているんだろう…」というときに使えます。
まとめ
これだけのconsole.XXX()
を使いこなせれば、見づらいデバッグログ地獄からも脱却できますね!
と言いつつ、結局console.log()
を打った方が楽だと思ってしまう自分もいますが…