如何关闭App Engine Channel API中的控制台日志记录?

时间:2012-05-23 06:59:31

标签: javascript google-app-engine firebug channel-api

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

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

enter image description here

有人知道吗?


更新

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

2 个答案:

答案 0 :(得分:1)

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

从本质上讲,这些只是AJAX请求,或者像Firebug想要的那样,XMLHttpRequests。

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

Uncheck XmlHttpRequest Logging in Firebug

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

有关如何充分利用Firebug的更多有用信息,请参阅Firebug Tips and Tricks

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

<强>更新

来自getFirebug

  

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

在Firebug 1.8.0中发布了console.timeStamp方法。上述相同的技术也可以覆盖此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和其他日志级别执行此操作的方式。

答案 1 :(得分:1)

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

将扩展程序解压缩到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 / hulfe0bb.ff5.0 / extensions / firebug @ software.joehewitt.com $

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

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

cd content/firebug/console

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

vim consoleExposed.js

禁用console.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并享受没有timeStamp的世界:

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