2

オブジェクトをクリックして検査できるように、時々オブジェクトをコンソールにダンプするのが好きです。例えば:

console.log(document.body);

よく見ると、ログはすべてのグループ (エラー、警告、情報...) の下ですべてをコンソールに記録しているようです。ただし、オブジェクトをダンプしません。代わりに、フォーマッタは最初に文字列に変換してから表示します。

goog.debug.expose を使用すると多少は役立ちますが、FireBug/Chrome のように検査に使用するきれいなクリック可能な行ではなく、膨大な量のテキストが作成される可能性があります。

これを解決するために、goog/debug/logger.js の一部のコードをコメントアウトしました。

// goog.global['console']['timeStamp'](msg);
...
// goog.global['console']['markTimeline'](msg);

ログに記録するときは、短いメッセージに google.debug.Logger を使用し、オブジェクトをコンソールにダンプする関数を作成しました。以下に例を示します: (一部の変数はグローバルであるため、FireBug で操作できます)

goog.require('goog.debug');
goog.require('goog.debug.DivConsole');
goog.require('goog.debug.Logger');
var con;
var l;
// dump object to firebug or chrome console for clickable inspection
var dumpToConsole=function(o){
    try{
        goog.global['console']['log'](o);
    }catch(e){
        l.warn("Cannot dump object to console."+
             goog.debug.deepExpose(o, true));
    }
}
var demoDebug = function() {
    var el=document.createElement("div");
    el.style.maxHeight="50px";
    el.style.overflow="auto";
    document.body.appendChild(el);
    con=new goog.debug.DivConsole(el);
    con.setCapturing(true);
    l = goog.debug.Logger.getLogger('myApp.translate');
    l.info("info");
    l.log("log");
    //dump object to console:
    dumpToConsole(document.body);
}
...
//in another script block later in the page:
demoDebug();

私の質問は:

これはロギングを行う良い方法ですか?

if (goog.DEBUG) {アプリケーションのデプロイ時にコンパイルされないように、すべてのログ コードをブロックに配置するように計画します。

4

0 に答える 0