google-closureライブラリには、ほとんどの開発者にとって馴染み深いlogging systemも含まれています。これはいいね。残念ながら、一部のブラウザ/プラグインで利用可能になったようにconsole.log
を使用した場合のように表現力が低下します。`goog.debug.Logger`(` console.log`など)の出力を改善できますか?
たとえば、Chromeにconsole.log(window)
と書き込むと、コンソールに対話形式で検査できるオブジェクトが表示されます。 google-closure loggerを使用している場合、それは実行されません。内部的にオブジェクトの文字列表現をconsole.log
に渡すと仮定します。だからあなたは多くの利便性を失う。
このため、私はまだconsole.log
を引き続き使用しています。しかし、運が悪い場合は、それを実動コードから削除することを忘れてしまい、console.log
(f.ex .: IE)を持たないブラウザでコードが破損する可能性があります。
window.console && window.console.log && console.log(...)
か::
あるいは、例えば、最初の有無をチェックすることによって、これを防ぐことが可能である
if (DEBUG) {
console.log(...)
}
しかし、両方のソリューションは完璧にはほど遠いです。そして、ライブラリにはロギングフレームワークがあるので、それを使用できるのは良いことです。今のところ、私はconsole.log
がはるかに便利であることがわかります。
私の質問(the tl/dr):myLogger.info(x)
の代わりにx
の文字列表現を使用してgoogle-closureユーザーconsole.log(x)
を作成することはできますか?
重要なビットは 'goog.debug.expose'ました。私は最初にログフレームワークのドキュメントを見ていたときにそれを逃しました!対話的な 'console.log'ダンプほど便利ではありませんが、ほとんどの場合、これはうまくいくでしょう。ほんとありがと! – exhuma
この回答のコードがエラーを引き起こすのではないかと心配しています。あなたが 'goog.require ... 'をインポートした直後に' goog.debug.Console'を使うので、 – hguser