Cha*_*ell 110 javascript debugging
我是Javascript开发的新手,所以这可能是一个真正的新手问题.
我有一个用于调试目的的sencha-touch应用程序console.log();.
我有快活做了我所有的编译时间相结合.它输出一个app.debug.js用于调试以及app.min.js用于生产
现在我可以查看所有代码文件,console.log();并在我准备好进行生产时手动删除它,但我想知道是否有办法覆盖该方法.
基本上,每当console.log();调用该方法时,请不要这样做.
这样,我可以将覆盖代码文件放在我的生产配置中,而不是在我的调试配置中.
这可能吗?
Nea*_*eal 212
把它放在文件的顶部:
var console = {};
console.log = function(){};
Run Code Online (Sandbox Code Playgroud)
对于某些浏览器和缩小器,您可能需要将其应用于窗口对象.
window.console = console;
Run Code Online (Sandbox Code Playgroud)
Lud*_*ltz 50
或者,如果您只想重新定义控制台的行为(例如,为了添加日志),您可以执行以下操作:
// define a new console
var console=(function(oldCons){
return {
log: function(text){
oldCons.log(text);
// Your code
},
info: function (text) {
oldCons.info(text);
// Your code
},
warn: function (text) {
oldCons.warn(text);
// Your code
},
error: function (text) {
oldCons.error(text);
// Your code
}
};
}(window.console));
//Then redefine the old console
window.console = console;
Run Code Online (Sandbox Code Playgroud)
pos*_*abs 39
能够在生产构建中切换日志记录是非常有用的.下面的代码默认关闭记录器.
当我需要查看日志时,我只需输入debug(true)控制台即可.
var consoleHolder = console;
function debug(bool){
if(!bool){
consoleHolder = console;
console = {};
Object.keys(consoleHolder).forEach(function(key){
console[key] = function(){};
})
}else{
console = consoleHolder;
}
}
debug(false);
Run Code Online (Sandbox Code Playgroud)
要彻底,这将覆盖所有控制台方法,而不仅仅是console.log.
console.log = function(){};
Run Code Online (Sandbox Code Playgroud)
像其他任何东西一样覆盖它.
我使用类似于posit labs的东西.将控制台保存在一个闭包中,您可以在一个便携式功能中使用它.
var GlobalDebug = (function () {
var savedConsole = console;
return function(debugOn,suppressAll){
var suppress = suppressAll || false;
if (debugOn === false) {
console = {};
console.log = function () { };
if(suppress) {
console.info = function () { };
console.warn = function () { };
console.error = function () { };
} else {
console.info = savedConsole.info;
console.warn = savedConsole.warn;
console.error = savedConsole.error;
}
} else {
console = savedConsole;
}
}
})();
Run Code Online (Sandbox Code Playgroud)
只需执行globalDebug(false)即可关闭日志消息或使用globalDebug(false,true)删除所有控制台消息.
如果不再需要,您还可以使用正则表达式删除代码中的所有 console.log() 调用。任何像样的 IDE 都将允许您在整个项目中搜索和替换这些内容,并允许您在提交更改之前预览匹配项。
\s*console\.log\([^)]+\);
Run Code Online (Sandbox Code Playgroud)
我建议使用:https://github.com/sunnykgupta/jsLogger
特征:
log,warn,error,info.可以修改,每当有新的建议时都会更新.
免责声明:我是该插件的作者.