🧐
console.logで[Object]が出たときはconsole.log('%o', obj)という選択肢もある
検索していると
console.log(JSON.stringify(obj));
だったり、
console.dir(obj, {depth: null});
等とする記事が多いですが、ドキュメントを読むとutil.formatに %o が用意してあるので、それを利用すると
console.log('%o', obj);
と書けます。
実際に試すと
$ node
> const obj = {
  hoge: {
    fuga : 1,
    piyo: {
      foo: 10,
      bar: {
        a: 100,
	b: {
	  c: 1000
	}
      }
    }
  }
};
> console.log(obj);
{ hoge: { fuga: 1, piyo: { foo: 10, bar: [Object] } } }
> console.log(JSON.stringify(obj));
{"hoge":{"fuga":1,"piyo":{"foo":10,"bar":{"a":100,"b":{"c":1000}}}}}
> console.dir(obj, {depth: null});
{
  hoge: {
    fuga: 1,
    piyo: { foo: 10, bar: { a: 100, b: { c: 1000 } } }
  }
}
> console.log('%o', obj);
{
  hoge: {
    fuga: 1,
    piyo: { foo: 10, bar: { a: 100, b: { c: 1000 } } }
  }
}
はい、 %o でも Object の中身も表示できてます。
ただし、node v11からデフォルトで4階層までとなっているようです。
> const obj2 = {
  hoge: {
    fuga : 1,
    piyo: {
      foo: 10,
      bar: {
        a: 100,
	b: {
	  c: 1000,
	  d: {
	    e: {
	      f: 10000
	    }
	  }
	}
      }
    }
  }
};
> console.log("%o", obj2)
{
  hoge: {
    fuga: 1,
    piyo: { foo: 10, bar: { a: 100, b: { c: 1000, d: [Object] } } }
  }
}
ということで、 %o を利用できる場合は、使うことで一番タイピング数を少なくすることができそうですね。



Discussion
console standard 的には
%o(console.dirxml 相当) ではなくて%O(console.dir 相当)では? みたいなところあります。