当我不debugging时,如何禁用console.log?
我有很多console.log ( 或任何其他控制台调用 )在我的代码,我想只有当我的应用程序在某种“debugging模式”使用它们。 
 我似乎无法使用某种logging器function,并在内部使用console.log因为然后我不知道什么行解雇它。 也许只有一个try / catch,但我的日志是非常笼统的,我不想在我的代码尝试/ catch。 
你会推荐什么?
我可能会滥用JavaScript的逻辑AND运算符 的短路本质,并replace下列实例:
 console.log("Foo."); 
附:
 DEBUG && console.log("Foo."); 
 假设DEBUG是一个全局variables,如果启用DEBUG则该variables的值为true 。 
 这个策略避免了终止console.log() ,所以你仍然可以在释放模式下调用它,如果你真的必须(例如追踪在debugging模式下不会发生的问题)。 
只需将console.logreplace为一个用于生产的空函数即可。
 if (!DEBUG_MODE_ON) { console = console || {}; console.log = function(){}; } 
讨论全局函数通常是一个坏主意。
 相反,您可以用LOG代替代码中的所有console.log实例,并在代码的开头: 
 var LOG = debug ? console.log.bind(console) : function () {}; 
 这将仍然显示正确的行号,如果需要,还保留第三方的东西预期console.log函数。 
现在,在2014年,我只是使用GULP (并build议大家,这是一个了不起的工具),我已经安装了一个名为stripDebug的包,它为你做。
  (我也在生产中使用closureCompiler和closureCompiler ) 
在生产中禁用console.log的另一种方法是保持开发状态。
 // overriding console.log in production if(window.location.host.indexOf('localhost:9000') < 0) { console.log = function(){}; } 
您可以更改您的开发设置,如本地主机和端口。
简单。
 添加一个bash脚本,find所有对console.log引用并删除它们。 
确保此批处理脚本作为部署到生产的一部分运行。
 不要将console.log作为一个空的函数,这是浪费计算和空间。 
这段代码适用于我:
 if(console=='undefined' || !console || console==null) { var console = { log : function (string) { // nothing to do here!! } } } 
  
 
最新版本的chrome显示哪一行代码在哪个文件中触发console.log。 如果你正在寻找一个日志pipe理系统,你可以尝试一下logeek,它允许你控制你想要查看的日志组。
 // In Development: var debugMode = true // In Prod: var debugMode = false // This function logs console messages when debugMode is true . function debugLog(logMessage) { if (debugMode) { console.log(logMessage); } } // Use the function instead of console.log debugLog("This is a debug message"); 
 这个Tiny包装器覆盖将包装原始的console.log方法与一个内部有一个检查的function,你可以从外面控制,加深如果你想看到控制台日志而不是。 
 我select了window.allowConsole作为示例标志,但在现实生活中使用它可能是其他的东西。 取决于你的框架。 
 (function(cl){ console.log = function(){ if( window.allowConsole ) cl(...arguments); } })(console.log) 
用法:
 // in development (allow logging) window.allowConsole = true; console.log(1,[1,2,3],{a:1}); // in production (disallow logging) window.allowConsole = false; console.log(1,[1,2,3],{a:1}); 
 这个覆盖应该在代码层次结构中尽可能地实现为“高”,以便在这之前“捕捉”所有的日志。 这可以扩展到所有其他console方法,如warn , time , dir等。