2

console.logアプリケーションをトレースするために JS ファイルで使用します。

問題: ログは本番環境にあります。コードから
次のような行を削除するにはどうすればよいですか?console.log

PS のようなテキスト ソリューションについてアドバイスしないでくださいfind + xargs + grep -v

4

4 に答える 4

4

私の重要なプロジェクトでは、内部で を使用する独自のログ関数がありますが、この関数の 1 か所を除いて、コードには呼び出しconsole.log()がありません。console.log()次に、1 つの変数を変更することで、ロギングを有効または無効にできます。

私の機能は実際にはこれよりも少し複雑で、コンソール以外の場所に出力を配置するオプションがありますが、概念的には次のようになります。

// change this variable to false to globally turn off all logging
var myLoggingEnabled = true;   

function myLog() {
    if (myLoggingEnabled) {
        if (window.console && console.log) {
            console.log.apply(this, arguments);
        }
    }
}

次に、次のようなコードを使用してログを記録できます。

myLog(foo);

参考までに、デプロイされたコードのコンパクトさとパフォーマンスの最適化のためにmyLog()、コードからすべての呼び出しを削除する最小化ステップもあります。これは、私が利用するために選択した最適化です。おそらく、このタイプの最適化も考慮しない理由を共有できます。

于 2012-08-25T20:52:00.270 に答える
3

まあ、あなたはそれらを無効にすることができます

console.log=function(){}

ただし、手動で削除しない限り、行は残ります。

于 2012-08-25T20:47:01.817 に答える
2

Grunt を使用する場合は、console.log ステートメントを削除/コメントするようにタスクを追加できます。したがって、console.log は呼び出されなくなりました。

https://www.npmjs.org/package/grunt-remove-logging-calls

于 2014-10-13T22:29:56.823 に答える
0

ええ、私は同様の状況にあったので、ここに投稿しました。http://bhavinsurela.com/naive-way-of-overriding-console-log/ これがコードの要点です。

var domainNames =["fiddle.jshell.net"]; // we replace this by our production domain.

var logger = {
    force:false,
    original:null,
    log:function(obj)
    {
        var hostName = window.location.hostname;
        if(domainNames.indexOf(hostName) > -1)
        {
            if(window.myLogger.force === true)
            {
                window.myLogger.original.apply(this,arguments);
            }
        }else {
            window.myLogger.original.apply(this,arguments);
        }
    },
    forceLogging:function(force){
        window.myLogger.force = force;
    },
    original:function(){
        return window.myLogger.original;
    },
    init:function(){
        window.myLogger.original = console.log;
        console.log = window.myLogger.log;
    }
}

window.myLogger = logger;
console.log("this should print like normal");
window.myLogger.init();
console.log("this should not print");
window.myLogger.forceLogging(true);
console.log("this should print now");
于 2016-06-02T06:14:37.873 に答える