Javascript 提供了哪些调试日志记录工具? [关闭]
Posted
技术标签:
【中文标题】Javascript 提供了哪些调试日志记录工具? [关闭]【英文标题】:What debug logging tools are available from Javascript? [closed] 【发布时间】:2010-09-10 19:56:11 【问题描述】:我想创建一个“通用”调试日志记录函数,用于检查知名日志库的 JS 命名空间。
例如目前支持Firebug的console.log:
var console = window['console'];
if (console && console.log)
console.log(message);
显然,这仅在安装/启用 Firebug 的情况下在 Firefox 中有效(它也可以在其他带有 Firebug Lite 的浏览器上工作)。基本上,我将提供一个 JS 库,我不知道它会被拉入什么环境,我想知道是否有办法向用户报告调试输出。
所以,也许 jQuery 提供了一些东西——我会检查 jQuery 是否存在并使用它。或者也许有一些我可以嗅探的知名 IE 插件。但它必须是一个相当完善和使用的机制。我无法检查人们创建的每一个晦涩的日志函数。
请,每个答案只有一个图书馆/技术,这样他们才能获得投票排名。此外,使用 alert() 是一个很好的短期解决方案,但如果您想要强大的调试日志记录或者如果阻止执行是一个问题,则会失败。
【问题讨论】:
【参考方案1】:我个人使用 Firebug/Firebug Lite,在 IE 上让 Visual Studio 进行调试。但是,当访问者使用一些疯狂的浏览器时,这些都没有任何好处。您确实需要让您的客户端 javascript 将其错误记录到您的服务器。看看我在下面链接到的 power point 演示文稿。它有一些关于如何让你的 javascript 在你的服务器上记录东西的非常巧妙的想法。
基本上,您将 window.onerror 和 try catch() 块与一个函数挂钩,该函数向您的服务器发出请求并提供有用的调试信息。
我刚刚在自己的 Web 应用程序上实现了这样一个过程。我有每个 catch() 块调用一个函数,该函数将 JSON 编码的消息发送回服务器,而服务器又使用我现有的日志记录基础设施(在我的例子中是 log4perl)。我链接到的演示文稿还建议在您的 javascript 中加载图像,将错误包含在 GET 请求中。唯一的问题是如果你想包含堆栈跟踪(IE 根本不会为你生成),请求会太大。
Tracking ClientSide Errors, by Eric Pascarello
PS:我想补充一点,我认为使用 jQuery 之类的任何类型的库来进行“硬核”日志记录都不是一个好主意,因为您记录错误的原因可能是 是 jQuery或萤火虫精简版!也许错误是浏览器(咳嗽 IE6)执行了一些疯狂的加载命令并抛出某种空引用错误,因为它太愚蠢而无法正确加载库。
在我的例子中,我确保我的所有 javascript 日志代码都在
中,而不是作为 .js 文件拉入。这样,我可以合理地确定,无论浏览器抛出什么样的曲线球,我都能记录下来。【讨论】:
【参考方案2】:你可以试试log4javascript。
披露:我写的。
【讨论】:
【参考方案3】:Firebug lite 是一个跨浏览器,精简版的 Firefbug,至少可以在大多数浏览器上为您提供 console.log 功能。
【讨论】:
【参考方案4】:MochiKit 具有以下功能(包括在此处与完整的命名空间解析):
MochiKit.Logging.logDebug() // prefaces value with "DEBUG: "
MochiKit.Logging.log() // prefaces value with "INFO: "
MochiKit.Logging.logError() // prefaces value with "ERROR: "
MochiKit.Logging.logFatal() // prefaces value with "FATAL: "
MochiKit.Logging.logWarning() // prefaces value with "WARNING: "
MochiKit.Logging 命名空间远不止这些,但这些都是基础知识。
【讨论】:
【参考方案5】:如果您已经在使用 jQuery,我可以衷心推荐 jQuery 调试插件(又名 jquery.debug.js)。见http://trainofthoughts.org/blog/2007/03/16/jquery-plugin-debug/。
此插件允许您通过全局开关关闭或打开调试日志。日志如下所示:
$.log('My value is: ' + val);
输出在 Firefox 下发送到 console.log,并写入到其他浏览器页面底部插入的 div 块中。
【讨论】:
我没有使用 jQuery - 如前所述,我正在创建一个库,该库可以加载到存在 jQuery 的页面中。如果发生这种情况,我想使用我可以依赖的 jQuery 功能......但是第三方插件是一个延伸......【参考方案6】:Firebug Lite(对于那些非 Firefox 浏览器)呢?除了在 IE 中调试 Dojo 代码时,我没有使用太多。但它尽最大努力在 IE、Safari 和 Opera 中放置 Firebug 控制台。
当然,总是有可靠的“alert (err_msg);” :D
【讨论】:
【参考方案7】:有JQuery Logging,看起来很有希望。
【讨论】:
【参考方案8】:我自己,我坚信以下几点:
alert('Some message/variables');
【讨论】:
这是一个很好的临时解决方案,但如果您发出信息级日志记录(通常有很多),则会失败。由于所有的 alert()s,应用程序很快就会变得无法使用 啊,我以为更多的是信息的短期输出 即使你只是简单地“输出”信息,因为警报是一个阻塞调用,不幸的是,它可能会导致副作用,尤其是。与阿贾克斯。我的代码表现不佳仅仅是因为警报放置在错误的位置。 我最大的个人问题之一是警报日志记录是它会阻塞,所以在用户点击 OK 之前不会运行其他脚本。如果您正在调试 Ajax 或其他类型的代码,这些代码可能会在您等待点击 OK 时收到响应,这可能会造成不利影响。以上是关于Javascript 提供了哪些调试日志记录工具? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章