vsy*_*ync 47 javascript debugging logging
我的代码中有很多console.log(或任何其他控制台调用),我只想在我的应用程序处于某种"调试模式"时才使用它们.
我似乎无法使用某种记录器功能和内部使用,console.log因为那时我不知道什么线发射它.也许只有try/catch,但我的日志非常通用,我不想在我的代码中尝试/ catch.
你会推荐什么?
Fré*_*idi 51
我可能会滥用JavaScript 逻辑AND运算符的短路特性并替换以下实例:
console.log("Foo.");
Run Code Online (Sandbox Code Playgroud)
附:
DEBUG && console.log("Foo.");
Run Code Online (Sandbox Code Playgroud)
假设DEBUG是一个全局变量,它评估true是否启用了调试.
这种策略可以避免中性console.log(),因此如果您真的需要,您仍然可以在发布模式下调用它(例如,跟踪调试模式中未发生的问题).
bjo*_*rnd 46
只需将console.log替换为空函数即可生成.
if (!DEBUG_MODE_ON) {
console = console || {};
console.log = function(){};
}
Run Code Online (Sandbox Code Playgroud)
nam*_*uol 30
Clobbering全球职能通常是一个坏主意.
相反,您可以console.log在代码LOG的开头替换代码中的所有实例:
var LOG = debug ? console.log.bind(console) : function () {};
Run Code Online (Sandbox Code Playgroud)
这仍将显示正确的行号,并console.log在需要时保留第三方内容的预期功能.
vsy*_*ync 14
现在,在2014年,我只是使用GULP(并推荐每个人,这是一个了不起的工具),我安装了一个名为stripDebug的软件包,它可以为您完成.
(我也用uglify,并closureCompiler在生产中)
在生产环境中禁用console.log并将其保留在开发中的另一种方法。
// overriding console.log in production
if(window.location.host.indexOf('localhost:9000') < 0) {
console.log = function(){};
}
Run Code Online (Sandbox Code Playgroud)
您可以更改开发设置,例如localhost和port。
| 归档时间: |
|
| 查看次数: |
37414 次 |
| 最近记录: |