有没有办法在 Google Chrome 控制台中过滤输出?

问题描述 投票:0回答:7

我从当前正在使用的第 3 方页面的输出中收到很多噪音,我想知道是否有一种方法可以过滤控制台上的输出。类似于 Logcat 的标志。有办法做到吗?

编辑

我找到了一种方法来禁用导致最大噪音的输出。我在控制台上单击鼠标右键,然后禁用

XMLHttpRequest Logging
选项。这不是我想要的,但却是我需要的。

javascript console filtering flags google-chrome-devtools
7个回答
23
投票

您可以使用正则表达式。

例如,要排除单词

browser-sync
,我使用
^((?!browser-sync).)*$

另请参阅此处


Chrome 44.0.2403.125


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); 

这是我的博客post,了解更多详细信息和 JavaScript 文件:


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); }
}

您想要记录的任何地方都用outputToConsole()替换console.log


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
  1. 您可以做的另一件简单的事情是右键单击控制台日志中的任何行,然后从弹出的上下文菜单中选择第一个选项:“隐藏来自 ___________ 的消息”(某些脚本名称)。这将隐藏该脚本产生的所有错误消息。

要再次“取消隐藏”这些消息,请注意不需要的脚本已添加到“过滤器”输入框中 - 只需从那里删除它,消息就会返回。


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) {};
    };
})();

0
投票

要有效过滤包含特定短语的控制台日志,例如`“JSON Viewer load”,您可以在过滤器输入中使用正则表达式。例如:

-/JSON Viewer load/

这种方法允许您精确定位内容中包含多个单词的日志。如果你想过滤所有以

"JSON"
开头的控制台日志,你可以使用

-JSON

但是,这个更广泛的过滤器可能会忽略一些相关信息。

包含特殊字符(如

(
)
)的文本必须转义:

过滤

"Uncaught (in promise) Error: A listener"

-/Uncaught \(in promise\) Error: A listener/

顺便说一句,由于广告拦截过滤器,上述错误将出现在您的控制台中,这些过滤器包含在 Brave 中并在其他浏览器中作为扩展添加。

© www.soinside.com 2019 - 2024. All rights reserved.