2

我已经实现了具有持久性的 Channel API。当我创建一个通道并连接套接字(这是在真实的应用程序上,而不是本地的 dev_appserver 上)时,Firebug 会因日志消息而发疯。我想关闭这些功能,以便查看我的 OWN 日志,但找不到任何有关如何禁用 Channel API 控制台日志记录的文档。

我可能做的与大多​​数人不同的一件事是我正在连接跨域... Channel API 支持(请注意流中的第一条消息...如果您可以查看该图片)

在此处输入图像描述

有人知道吗?


更新

我终于意识到我的代码正在创建两个通道并试图同时打开/连接它们......就是我收到大量消息的原因。我不是故意的(我知道规则: https ://developers.google.com/appengine/docs/python/channel/overview#Caveats )......这是一个错误......一旦我修复它,消息又回到了可管理的水平。

4

2 回答 2

1

在开发服务器上,当使用 ChannelAPI 时,它本质上会降级为轮询实现,而不是使用 Comet/long-polling。因此,在您的调试器中,您会看到向服务器发出的源源不断的 HTTP 请求,以不断地有条不紊地检查更新。

本质上,这些只是 AJAX 请求,或者如 Firebug 所想的那样,XMLHttpRequests。

由于您的浏览器负责发出这些请求,因此禁用它们的唯一方法是单击 Firebug 中“控制台”上的小箭头并取消选中记录 XMLHttpRequests 的选项。

取消选中 Firebug 中的 XmlHttpRequest 日志记录

当然,这也会禁用所有其他 XMLHttpRequest 的日志记录。但要为一个安静、行为良好的 JavaScript 控制台的清晰和宁静付出很小的代价。

有关如何充分利用 Firebug 的更多有用信息,请参阅Firebug 提示和技巧

注意:这适用于 Python SDK 和 Java SDK 的用户。(或 Go SDK,假设它具有等效的 ChannelAPI)。这不仅限于 Python Appengine。

更新:

getFirebug

创建一个时间戳,可以与 HTTP 流量计时一起使用,以衡量某段代码何时执行。

console.timeStamp 方法在 Firebug 1.8.0 中发布。上述相同的技术也可以覆盖此 Firebug 日志记录方法。

console.timeStamp("This is the type of console logging statement that Google is using!");

上面的日志语句将产生橄榄色文本。可以使用上一节中描述的相同技术禁用此方法。

但是,Google 在闭包中加载控制台对象,这意味着,一旦 Google 的代码被初始化,ChannelAPI 对象就拥有它自己的控制台对象副本。

为了禁用console.timeStamp,需要在加载或运行其他任何内容之前将其作为第一个操作禁用。换句话说,我们需要确保 Google 只使用禁用的 console.timeStamp 方法。

为获得最佳结果,请在 /_ah/channel/jsapi 脚本标记上方加载此代码,以确保在加载 jsapi 之前禁用 console.timeStamp 方法:

if(window.console) console.timeStamp = function(t) { };

注意:由于 Google 以这种方式调用 Firebug 日志记录,唯一的解决方案实际上很可能需要一个允许以编程方式禁用此级别日志记录的错误报告或功能请求。或者,Firebug 团队可以提供一个新版本的 Firebug,其中包括显式禁用 timeStamp 日志语句的能力,类似于他们对错误、警告、XMLHttpRequests 和其他日志级别的做法。

于 2012-05-23T07:28:38.057 回答
1

似乎没有办法关闭 Firebug 时间戳日志。解决此问题的一种方法是自己编辑代码并删除此功能:

将扩展解压到 Mozilla Firefox 配置文件中的目录:

将目录更改为您的 Firefox 配置文件扩展目录。在 Ubuntu 上,这将是这样的:

cd ~/.mozilla/firefox/{random-string}/extensions/

Firebug 扩展由 标识firebug@software.joehewitt.com.xpi。创建一个同名但没有 .xpi 的新目录,并将 XPI 移动到该目录中:

mkdir firebug@software.joehewitt.com
mv firebug@software.joehewitt.com.xpi firebug@software.joehewitt.com

接下来,将目录更改为新创建的 Firebug 目录,然后解压缩扩展:

cd firebug@software.joehewitt.com
unzip firebug@software.joehewitt.com.xpi

所有文件都应该被解压,以便扩展的目录位于当前目录中。您的文件结构将如下所示:

$: ~/.mozilla/firefox/{random-string}/extensions/firebug@software.joehewitt.com$ l
chrome.manifest  defaults/  firebug@software.joehewitt.com.xpi  install.rdf  locale/   skin/
content/         docs/      icons/                              license.txt  modules/

$: ~/.mozilla/firefox/ghlfe0bb.ff5.0/extensions/firebug@software.joehewitt.com$

在文本编辑器中打开 consoleExposed.js:

接下来,切换到content/firebug/console目录:

cd content/firebug/console

consoleExposed.js使用您喜欢的编辑器编辑文件:

vim consoleExposed.js

禁用控制台.timeStamp:

在第 215 行或附近,您将看到以下函数:

console.timeStamp = function(label)
{  
    label = label || "";

    if (FBTrace.DBG_CONSOLE)
        FBTrace.sysout("consoleExposed.timeStamp; " + label);

    var now = new Date();
    Firebug.NetMonitor.addTimeStamp(context, now.getTime(), label);

    var formattedTime = now.getHours() + ":" + now.getMinutes() + ":" +
        now.getSeconds() + "." + now.getMilliseconds();
    return logFormatted([formattedTime, label], "timeStamp");
};

在第一个花括号之后,强制函数不返回任何内容:

console.timeStamp = function(label)
{   return ;   // disable timestamp by returning
    label = label || "";

    if (FBTrace.DBG_CONSOLE)

重启 Firefox,享受没有时间戳的世界:

编辑后,重新启动 Firebug。您不应再在控制台中看到 timeStamp 的日志消息。

于 2012-06-01T03:05:19.287 回答