谷歌浏览器的控制台中是否有过滤输出的方法?

27

我目前正在使用的第三方页面输出的信息很多,我想知道是否有一种方法可以在控制台上过滤输出。类似于Logcat的标志。有办法做到这一点吗?

编辑

我找到了一种禁用最大噪音输出的方法。我在控制台上右键单击,然后禁用了XMLHttpRequest Logging选项。这不是我想要的,但这正是我所需要的。


以什么方式进行过滤?比如按网站? - Blender
我正在开发一个扩展,它会输出到控制台,而页面也会输出到控制台...我想做类似于console.log('extension', 'The message');这样的事情,并且过滤输出,只看到带有'extension'标记的内容,而不是整个输出。 编辑 或者按级别过滤:console.warn()console.error() - Jorge Guberte
关于警告和错误,如果您正在运行开发通道,则在底部窗格上有筛选按钮:http://i.imgur.com/0VN67.png - Blender
1
您可以使用控制台右上角的搜索框,在错误消息中搜索特定文本。 - NoBugs
1
这个回答解决了你的问题吗?过滤Chrome控制台消息 - SuperStormer
显示剩余4条评论
7个回答

24

您可以使用正则表达式。

例如,要排除单词browser-sync,我使用^((?!browser-sync).)*$

输入图像描述

另请参见此处


Chrome 44.0.2403.125


3
自从最新版的Chrome中删除了复选框Regex后,我使用/^((?!browser-sync).)*$/表示这是一个正则表达式。这个正则表达式取自于这个答案 - margaretkru
1
在最近的版本中,您只需使用“-”前缀来否定要排除的单词,参见https://developers.google.com/web/updates/2017/08/devtools-release-notes#negative-filters。 - pcworld

22

进一步扩展上面的回答评论...

进入控制台模式(在Windows上是Control Shift J),输入以下内容:

console.nativeLog = console.log;

然后输入这个

console.log = function( a, b ){ if(a=="extension") console.nativeLog( b ) }
第一行代码将原生实现保留在一个安全的位置。 第二行代码几乎就是你所要求的。
对我而言运行正常。

3
我刚刚在我的博客中发表了关于这个问题的解决方案。我修改了Ben Alman的“ba-debug”库,并创建了一个模块化的“Trace”对象,旨在与不同的模块或代码区域(由您定义)一起使用。
基本用法:
   var _trace = new Trace('ModuleName');

然后,当你想要追踪任何级别的诊断时,你需要:
   _trace.error('error level message');
   _trace.warn('warning level message');
   _trace.info('information level message');
   _trace.log('log level message');
   _trace.debug('debug level message');

然后,在您的页面或控制台中,您可以这样做:
   Trace.traceLevel('ModuleName', Trace.Levels.warn); 

这是我的博客帖子,包括更多细节和JavaScript文件:post

2
如果您同时控制页面和扩展脚本,则可以通过自己的函数运行两者。在该函数中,您现在可以控制输出。
var pageErrors = true;
var extErrors = true;

function outputToConsole(message, sender) {
   if (sender == 'page' && pageErrors) { console.write(message); }
   if (sender == 'ext' && extErrors) { console.write(message); }
}

在你想要记录日志的任何地方,将console.log替换为outputToConsole()


很遗憾,我无法控制该页面。 - Jorge Guberte
1
嗯,让我想一想。在 Stack Overflow 上看看这个。这个人可以打开和关闭日志记录,甚至有一个示例。https://dev59.com/aHM_5IYBdhLWcg3wzmvM - mrtsherman
谢谢您给我第一个赏金!您为什么没有将我的帖子标记为答案呢? - tomdemuyt

1
如果正则表达式不是你的强项,有两件事情可以做:
  1. 在筛选输入框中,您可以添加一串负匹配字符串,这将阻止以这些字符开头的消息显示。

示例:

-WARNING -Errorcode -bonk

将抑制以下类似的消息:

WARNING line 234 something else on this line
This message will still display
Errorcode 234: Some error that will be hidden
bonk

上述中唯一会显示的消息是:
This message will still display
  • 另一个简单的方法是在控制台日志中右键单击任何一行,并从弹出的上下文菜单中选择第一个选项:“隐藏来自___________(某个脚本名称)的消息”。这将隐藏该脚本产生的所有错误消息。
  • 要再次“取消隐藏”这些消息,请注意不需要的脚本已添加到筛选器输入框中 - 只需从其中删除即可恢复消息。


    其实我就是在找这个解决方案。谢谢你的回答。 - Adeyemi Simeon

    0
    这是我刚刚为解决同样的问题所写的代码。与之前的答案相比,它有一个好处,就是可以正确处理多个参数传递给console.log,并且可以防止缺少window.console.log而抛出未捕获的异常。
    (function(){
        window.console = window.console||{log:0};
        var nativeLog = window.console.log;
        window.console.log = function() { 
            try {
                // these conditions find all console.log output
                // from bitcoinjs-0.1.3 but not much else
                // (who else ends an extremely short first parameter with a space?)
                if ((arguments.length == 2) 
                  && (arguments[0].length <= 5) 
                  && (arguments[0].slice(-2) === ': ')
                ) {
                    return;
                };
                nativeLog.apply(window.console, arguments);
            } catch(e) {};
        };
    })();
    

    我不知道為什麼有人對您進行了負面評價,但根據您的回答,我成功地為過於冗長的第三方庫創建了一個很好的過濾器,消除了在控制台上的垃圾信息。當然,try-catch代碼塊可以更清晰地表述其功能,但其餘部分是完美的。 - Mikko Tapionlinna
    你可能可以省略异常处理(try和catch行),但这样做会有意外破坏代码的风险。如果你插入的任何代码(例如匹配本身)遇到了调用console.log看到的异常,那么你就会执行一些调用代码未预期的操作。 - user2127434

    0
    为了有效地过滤包含特定短语的控制台日志,比如"JSON Viewer load",您可以在过滤输入框中使用正则表达式。例如:
    -/JSON Viewer load/
    

    这种方法允许您精确地定位日志内容中包含多个词的日志。如果您想过滤所有以"JSON"开头的控制台日志,您可以使用。
    -JSON
    

    然而,这种更广泛的过滤器可能会遗漏一些相关信息。
    请注意:
    包含特殊字符的文本,例如括号()必须进行转义:
    过滤器"Uncaught (in promise) Error: A listener"将变为:
    -/Uncaught \(in promise\) Error: A listener/
    

    顺便说一下,上面提到的错误会在你的控制台中出现,这是由于广告拦截过滤器的原因,这些过滤器在Brave浏览器中已经包含,并且在其他浏览器中作为扩展添加。

    希望没有人忽视斜杠“/”前面的减号“-”。 - undefined

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