exh*_*uma 5 javascript logging google-closure
在谷歌,封库还包含一个记录系统,这应该是最熟悉的开发者.这很好.不幸的是,你得到的输出不如使用console.log某些浏览器/插件提供的那样具有表现力.
例如,如果您console.log(window)在Chrome中编写,控制台将显示一个可以交互式检查的对象.使用google-closure记录器时,它不会那样做.我假设它将在内部简单地传递对象的字符串表示形式console.log.所以你失去了很多便利.
因此,我仍然继续使用console.log.但是,如果运气不好,你忘记将它从生产代码中删除,你的代码将在没有的浏览器console.log(f.ex:IE)中中断.
或者,可以通过首先检查存在来防止这种情况,例如:
window.console && window.console.log && console.log(...)
Run Code Online (Sandbox Code Playgroud)
要么:
if (DEBUG) {
console.log(...)
}
Run Code Online (Sandbox Code Playgroud)
但这两种解决方案都远非完美.并且,鉴于该库具有日志框架,能够使用它会很好.就像现在一样,我发现console.log有时更有用.
所以我的问题(tl/dr):我可以使用字符串表示形式console.log(x)编写google-closure用户myLogger.info(x)而不是它x吗?
小智 5
您还可以使用goog.debug.FancyWindow来显示一个单独的窗口来显示日志记录.有关更多信息,请参阅Google封闭演示页:https://github.com/google/closure-library/blob/master/closure/goog/demos/debug.html并查看源代码.
如果您只是使用控制台日志记录,另一个优点是框架将自动添加模块名称和时间...只需添加以下行以使用控制台日志记录:
goog.require('goog.debug.Console');
if (goog.DEBUG) {
debugConsole = new goog.debug.Console;
debugConsole.setCapturing(true);
}
Run Code Online (Sandbox Code Playgroud)
这也将阻止在生产代码中显示控制台日志记录.
问候,
刘若英
| 归档时间: |
|
| 查看次数: |
2362 次 |
| 最近记录: |