gpt4 book ai didi

javascript - 是否有可能为 `goog.debug.Logger` 获得更好的输出(如 `console.log` )?

转载 作者:数据小太阳 更新时间:2023-10-29 06:07:44 26 4
gpt4 key购买 nike

google-closure库还包含一个 logging system大多数开发人员应该很熟悉。这很好。不幸的是,您从中获得的输出不如使用某些浏览器/插件提供的 console.log 时的表现力。

例如,如果您在 Chrome 中编写 console.log(window),控制台将显示一个您可以交互式检查的对象。使用 google-closure 记录器时,它不会那样做。我假设它会在内部简单地将对象的字符串表示形式传递给 console.log。所以你失去了很多便利。

正因为如此,我仍然继续使用console.log。但是,如果运气不好,您忘记将其从生产代码中删除,您的代码将在没有 console.log(例如:IE)的浏览器中中断。

或者,可以通过首先检查是否存在来防止这种情况,例如:

window.console && window.console.log && console.log(...)

或:

if (DEBUG) {
console.log(...)
}

但这两种解决方案都远非完美。而且,考虑到该库一个日志框架,如果能够使用它就好了。现在,我发现 console.log 有时更有用。

所以我的问题(tl/dr):当我写 myLogger.info(x) 时,我可以让 google-closure 用户 console.log(x)它使用 x 的字符串表示?

最佳答案

您还可以使用 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);
}

这也将阻止在生产代码中显示控制台日志。

问候,

雷内

关于javascript - 是否有可能为 `goog.debug.Logger` 获得更好的输出(如 `console.log` )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11186698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com