如何禁用Firefox控制台分组重复输出?

41

有谁知道如何避免Firefox控制台分组记录条目?

我已经看到了如何使用Firebug进行操作https://superuser.com/questions/645691/does-firebug-not-always-duplicate-repeated-identical-console-logs/646009#646009但我在about:config部分中没有找到任何分组日志条目。

我不想使用Firebug,因为它已经不再受支持或维护,而我非常喜欢Firefox控制台。

我尝试更好地解释一下,我希望控制台打印所有日志,而不是带有一个日志字符串发生次数的红色徽章:

enter image description here

在上面的图片中,我希望第一行日志行有两行,第二行也有两行,第三行有三行。

这可行吗?

提前致谢。


1
我已经想象过了,谢谢@MehdiDehghani。如果你想发表答案,我会很高兴接受它。 - amicoderozer
计数器徽章有助于控制台不会被完全相同的输出淹没。那么,您想单独查看这些日志的原因是什么? - Sebastian Zartner
请查看这个答案。 - Almir Campos
@AlmirCampos 哪个答案?链接将我带到问题。 - amicoderozer
1
@amicoderozer 对于混淆感到抱歉。我写了一个很长的答案,但注意到其中有些混淆(深夜+无数打开的窗口),所以我删除了它,以便稍后进行更正。简短的答案是,这个“分组相似”功能在Chrome和Firefox中都不能正确工作。幸运的是,如果你在Firefox上简单地勾选“显示时间戳”(我使用的是版本76),你就可以将消息分开。不幸的是,Chrome不会这样做。它继续显示第一个时间戳的出现次数。在我的原始答案中,我强调这是一个错误。 - Almir Campos
显示剩余3条评论
5个回答

15

更新[2022-01-24]

似乎下面的选项不像预期的那样起作用。欢迎报告它作为一个错误

更新[2020-01-28]

Firefox团队添加了分组相似消息的选项,并默认启用。

您可以通过控制台设置访问此选项

  • 打开Firefox的开发工具
  • 选择控制台选项卡
  • 单击齿轮按钮(位于工具栏右侧)
  • 按照您的意愿更改选项

原始答案

如我在评论部分中提到的,目前没有办法实现这一点。也许您应该尝试通过Bugzilla@Mozilla 请求此功能

此外,您可以查看Firebug与Firefox DevTools之间的差距


2
它至少在开发者版84.0b8(64位)中无法工作。 - Maxim
在v83中它按预期工作,所以请确保您使用的是最新的稳定版本。您也可以报告此问题。(在报告问题之前,请尝试使用全新的配置文件或通过“about:support”刷新Firefox) - Mehdi Dehghani
4
截至2022年1月,这个方法已经失效了。虽然选项存在,但在选择后仍会分组控制台输出。 - Mike
这只影响警告和错误,不会影响 console.log() 消息,它们仍然会被分组(这非常令人沮丧,因为警告和错误是你想要分组和隐藏以减少混乱的信息,而有意义的消息是你不想分组并希望看到每一个的)。 - Synetech
2
错误追踪链接:https://bugzilla.mozilla.org/show_bug.cgi?id=1615206 - FrequentGuest
显示剩余2条评论

9
作为解决方法,您可以在日志字符串后附加一个Math.random()。这样可以使所有输出消息都是唯一的,从而导致它们全部被打印出来。例如:
console.log(yourvariable+" "+Math.random());

4
现在Web Console工具栏右侧有一个设置菜单(),其中包含✓ 分组相似的消息

Firefox的Web控制台


10
我看到了设置,我看到了更改偏好选项“devtools.webconsole.groupWarningMessages”,但它没有起作用,即使在新的Firefox中仍然分组消息。有什么想法吗?还是这个一个bug? - Bonewolf
7
是我自己的问题,还是“分组相似消息”和“显示时间戳”设置根本就不能停止消息分组?我正在尝试查看一些console.log输出,但所有消息仍然都被分组在一起。Firefox v79。 - rossisdead
4
@rossisdead同意,它似乎没有关注这个设置;对于我来说,无论开关状态如何,都会自动将人群聚集在一起。 - Ari Black

2
为了解决这个问题,你可以使用这个变通方法:覆盖window中的console.log命令,使每个后续行与前一行不同。
这包括在以下选项之间切换:在每行前添加一个不可见的零宽度空格、在每行前添加时间戳、在每行前添加行号。以下是一些示例:
(function()
{
    var prefixconsole = function(key, fnc)
    {
        var c = window.console[key], i = 0;
        window.console[key] = function(str){c.call(window.console, fnc(i++) + str);};
    };

    // zero padding for linenumber
    var pad = function(s, n, c){s=s+'';while(s.length<n){s=c+s;}return s;};

    // just choose any of these, or make your own:
    var whitespace = function(i){return i%2 ? '\u200B' : ''};
    var linenumber = function(i){return pad(i, 6, '0') + ' ';};
    var timestamp = function(){return new Date().toISOString() + ' ';};

    // apply custom console (maybe also add warn, error, info)
    prefixconsole('log', whitespace); // or linenumber, timestamp, etc
})();

复制带有零宽度空格的日志消息时要小心。


这对我真的有用,非常感谢! - IntelliData

1
尽管到2018年8月为止,您仍无法做到这一点,但我有一个解决方法,可能或可能不符合您的要求。您必须在控制台中显示与某一行不同/独特的内容,以避免小数字并获得单独的行。我正在调试一些JavaScript。我在控制台中得到了“Return false”和蓝色的3,表示连续三个错误结果(我没有显示“true”的结果)。如果我要进行更多测试,我想看到所有三个“false”消息。我发现,如果我插入另一个console.log语句,每次都会显示不同的内容(在我的情况下,我只显示了输入数据,因为它相对较短),那么我将获得每个“Return false”的单独行,而不是带有小数字3的一行。因此,在下面的代码中,如果您取消注释此处:“console.log(data);”,则会先得到数据,然后是“Return false”,而不是带有小数字3的“false”。如果您不想在控制台中增加额外的行,则另一种选择是将两个语句合并为一个:“console.log("Return false -- " + data);”。
function(data){

   ...more code here...

    // console.log(data);
    console.log("Return false ");
    return false;
}

threeWords("Hello World hello"); //== True
threeWords("He is 123 man"); //== False
threeWords("1 2 3 4"); //== False
threeWords("bla bla bla bla"); //== True
threeWords("Hi"); // == False

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接