console.log
アプリケーションをトレースするために JS ファイルで使用します。
問題: ログは本番環境にあります。コードから
次のような行を削除するにはどうすればよいですか?console.log
PS のようなテキスト ソリューションについてアドバイスしないでくださいfind + xargs + grep -v
。
console.log
アプリケーションをトレースするために JS ファイルで使用します。
問題: ログは本番環境にあります。コードから
次のような行を削除するにはどうすればよいですか?console.log
PS のようなテキスト ソリューションについてアドバイスしないでくださいfind + xargs + grep -v
。
私の重要なプロジェクトでは、内部で を使用する独自のログ関数がありますが、この関数の 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()
、コードからすべての呼び出しを削除する最小化ステップもあります。これは、私が利用するために選択した最適化です。おそらく、このタイプの最適化も考慮しない理由を共有できます。
まあ、あなたはそれらを無効にすることができます
console.log=function(){}
ただし、手動で削除しない限り、行は残ります。
Grunt を使用する場合は、console.log ステートメントを削除/コメントするようにタスクを追加できます。したがって、console.log は呼び出されなくなりました。
ええ、私は同様の状況にあったので、ここに投稿しました。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");