2011-07-12 17 views
21

Estoy obteniendo mucho ruido de la salida de la página de la tercera parte con la que estoy jugando y me pregunto si hay una forma de filtrar la salida en la consola. Algo así como las banderas de Logcat. ¿Hay una manera de hacer eso?¿Hay alguna manera de filtrar la salida en la consola de Google Chrome?

EDITAR

He encontrado una manera de desactivar la salida que estaba causando el mayor ammount de ruido. Hice clic con el botón derecho en la consola y luego deshabilité la opción XMLHttpRequest Logging. No es lo que quería, pero es lo que necesitaba.

+0

Filtro de qué manera? Al igual que por el sitio? – Blender

+0

Estoy desarrollando una extensión que se envía a la consola, y la página también se envía a la consola ... me gustaría hacer algo como 'console.log ('extensión', 'El mensaje');' y filtrar la salida, así que solo veo las cosas marcadas con 'extensión' en lugar de la salida completa. EDITAR O filtrar por niveles: 'console.warn()', 'console.error()' –

+0

Veo. No creo que exista funcionalidad en Chrome ... – Blender

Respuesta

2

Si tiene control tanto de la página como de los scripts de extensión, puede ejecutar ambos a través de su propia función. En esa función ahora puedes controlar la salida.

var pageErrors = true; 
var extErrors = true; 

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

todas partes que desea iniciar sesión sustituir console.log con outputToConsole()

+0

No tengo el control de la página, desafortunadamente. –

+1

Hmmm, me hizo pensar. Mira esto en SO. Este tipo enciende y apaga el registro e incluso tiene un ejemplo. http://stackoverflow.com/questions/1215392/how-to-quickly-and-conveniently-disable-all-console-log-statements-in-my-code – mrtsherman

+0

¡Gracias por mi primer premio! ¿Alguna razón por la que no marcó mi publicación como respuesta? – tomdemuyt

18

Yendo más lejos que los anteriores comentarios La respuesta ..

Ir en modo consola (Shift Control J en Windows), introduzca esto:

console.nativeLog = console.log; 

A continuación, introduzca este

console.log = function(a, b){ if(a=="extension") console.nativeLog(b) } 

La primera línea mantiene la implementación nativa en un lugar seguro. La segunda línea hace prácticamente lo que usted solicita.

Funciona para mí.

3

Acabo de bloguear sobre mi solución a esto. Modifiqué la biblioteca "ba-debug" de Ben Alman e hice un objeto "Trace" modular diseñado para ser utilizado con diferentes módulos o áreas del código (definido por usted).

Uso básico:

var _trace = new Trace('ModuleName'); 

Entonces, cuando se desea trazar cualquier nivel de diagnóstico, trata de:

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

Luego, en su página, o en su consola, puede hacer esto:

Trace.traceLevel('ModuleName', Trace.Levels.warn); 

Aquí es mi blog post para obtener más detalles y el archivo JavaScript:

0

Esto es lo que acabo de escribir para resolver el mismo problema. En comparación con las respuestas anteriores, tiene la ventaja de manejar adecuadamente argumentos múltiples al console.log y de prevenir la ausencia de window.console.log para lanzar excepciones no detectadas.

(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

No tengo idea de por qué alguien te ha descolocado, de acuerdo con tu respuesta, pude crear un buen filtro para una biblioteca de terceros demasiado extensa que envió spam a la consola. Claro, el bloque try-catch podría ser un poco más claro de lo que es, pero el resto era dorado. –

+0

Probablemente pueda omitir el manejo de excepciones (las líneas de prueba y captura), pero existe el riesgo de romper el código accidentalmente. Si alguna parte del código que inserta, por ejemplo la coincidencia, alguna vez se encuentra con una excepción que ve la persona que llama de console.log, hace algo que el código de llamada no se escribió para esperar. – pyramids

20

Puede usar expresiones regulares.

Por ejemplo, para excluir la palabra browser-sync utilizo ^((?!browser-sync).)*$.

enter image description here

Ver también here


Chrome 44.0.2403.125

+2

Como la casilla de verificación 'Regex' se ha eliminado de la última versión de cromo, utilicé'/^ ((?! browser-sync).) * $/'Para indicar que es una expresión regular. Tomado de [esta respuesta] (https://stackoverflow.com/a/42044616/6053299). – margaretkru

Cuestiones relacionadas