¿Hay alguna manera de apagar todo console.log
declaraciones en mi código JavaScript, con fines de prueba?
javascript
debugging
console
Zack Burt
fuente
fuente
PICOLOG_LEVEL
(nodo) y es súper pequeño. Menos de 900 bytes minificados y comprimidos. Descargo de responsabilidad: soy el autor.console
funciones. Solo mire stapp.space/disable-javascript-console-on-productionRespuestas:
Redefina la función console.log en su script.
Eso es todo, no más mensajes para consolar.
EDITAR:
Ampliando la idea de Cide. Un registrador personalizado que puede usar para activar / desactivar el inicio de sesión desde su código.
Desde mi consola Firefox:
¿Cómo utilizar el 'registrador' anterior? En su evento listo, llame a logger.disableLogger para que los mensajes de la consola no se registren. Agregue llamadas a logger.enableLogger y logger.disableLogger dentro del método para el que desea registrar mensajes en la consola.
fuente
console.log
... ¿Por qué no simplemente tener una función booleana y una función condicional para iniciar sesión?Lo siguiente es más completo:
Esto pondrá a cero los métodos comunes en la consola si existe, y se pueden llamar sin error y prácticamente sin sobrecarga de rendimiento. En el caso de un navegador como IE6 sin consola, se crearán los métodos ficticios para evitar errores. Por supuesto, hay muchas más funciones en Firebug, como rastreo, perfil, hora, etc. Se pueden agregar a la lista si las usa en su código.
También puede verificar si el depurador tiene esos métodos especiales o no (es decir, IE) y poner a cero los que no admite:
fuente
Por lo que puedo deducir de la documentación , Firebug no proporciona ninguna variable para alternar el estado de depuración. En su lugar, envuelva console.log () en un contenedor que lo llame condicionalmente, es decir:
Para no tener que cambiar todas las llamadas existentes, puede usar esto en su lugar:
fuente
¡Usted no debe!
No es una buena práctica sobrescribir las funciones integradas. Tampoco hay garantía de que suprima todos los resultados, otras bibliotecas que use pueden revertir sus cambios y hay otras funciones que pueden escribir en la consola;
.dir()
`.warning()
`.error()
`.debug()
`.assert()
Etc.Como algunos sugirieron, podría definir una
DEBUG_MODE
variable y registrar condicionalmente. Dependiendo de la complejidad y la naturaleza de su código, puede ser una buena idea escribir su propio objeto / función de registrador que envuelva el objeto de la consola y tenga esta capacidad incorporada. Ese sería el lugar adecuado para hacer frente a la instrumentación .Dicho esto, para fines de 'prueba' puede escribir pruebas en lugar de imprimir en la consola. Si no está haciendo ninguna prueba, y esas
console.log()
líneas fueron solo una ayuda para escribir su código, simplemente elimínelas .fuente
"other libraries you use may revert your changes"
: si lo deshabilitoconsole.log
desde el principio, no pueden volver a la función anterior. Bueno, pueden reescribir elconsole.log
código fuente, pero ¿por qué?"it may be a good idea to write your own logger object/function that wraps around the console object"
: He hecho esto en el pasado y es una mala idea. La traza de la salida de la consola se refiere al contenedor y no a la línea que lo invoca, lo que dificulta la depuración.console.log('Look ma, it reaches this point');
en su código, cuando todo lo demás falla, puede usar lasdebugger;
instrucciones."the code is coupled to that infrastructure"
: el código probablemente, pero el patrón no. Si crea una plantilla básica común para sus páginas donde las funciones de registro están deshabilitadas, es una lógica que puede aplicar en todas partes."the later shouldn't be browser-aware"
: bueno, entonces no deberías usar JS: PMe doy cuenta de que esta es una publicación antigua, pero aún aparece en la parte superior de los resultados de Google, por lo que aquí hay una solución más elegante que no es jQuery que funciona en los últimos Chrome, FF e IE.
fuente
Sé que preguntaste cómo deshabilitar console.log, pero esto podría ser lo que realmente buscas. De esta manera, no tiene que habilitar o deshabilitar explícitamente la consola. Simplemente evita esos molestos errores de consola para las personas que no la tienen abierta o instalada.
fuente
Simplemente cambie la bandera
DEBUG
para anular la función console.log. Esto debería funcionar.fuente
function myLog(msg) { if (debug) { console.log(msg); } }
Me sorprende que de todas esas respuestas nadie combine:
Yo iría por esto:
fuente
Después de buscar este problema también y probarlo dentro de mi aplicación cordova, solo quiero advertir a todos los desarrolladores que Windows Phone no sobrescriba
porque la aplicación se bloqueará al inicio.
No se bloqueará si está desarrollando local si tiene suerte, pero al enviarlo a la tienda se bloqueará la aplicación.
Solo sobrescribe
si lo necesitas.
Esto funciona en mi aplicación:
fuente
Si usa IE7, la consola no se definirá. Entonces, una versión más amigable con IE sería:
fuente
Este es un híbrido de respuestas de SolutionYogi y Chris S. Mantiene los números de línea de console.log y el nombre del archivo. Ejemplo jsFiddle .
fuente
Si usa Grunt, puede agregar una tarea para eliminar / comentar las declaraciones de console.log. Por lo tanto, ya no se llama a console.log.
https://www.npmjs.org/package/grunt-remove-logging-calls
fuente
He estado usando lo siguiente para tratar el problema:
Establezca depuración en 1 para habilitar la depuración. Luego use la función de registrador al generar texto de depuración. También está configurado para aceptar dos parámetros.
Entonces, en lugar de
utilizar
fuente
He usado winston logger anteriormente.
Hoy en día estoy usando el siguiente código más simple por experiencia:
Establezca la variable de entorno desde cmd / línea de comando (en Windows):
O bien, podría tener una variable en su código si lo desea, pero más arriba es mejor.
Reinicie cmd / línea de comando, o IDE / editor como Netbeans
Tener abajo como código:
Ahora use todas las consolas. * Como se muestra a continuación:
Ahora, en función de la configuración de LOG_LEVEL realizada en el punto 1 (como,
setx LOG_LEVEL log
y reiniciar la línea de comando), algunos de los anteriores se imprimirán, otros no se imprimiránEspero que haya ayudado.
fuente
Advertencia: ¡enchufe descarado!
También podría usar algo como mi objeto JsTrace para tener un rastreo modular con capacidad de "conmutación" a nivel de módulo para activar solo lo que desea ver en ese momento.
http://jstrace.codeplex.com
(También tiene un paquete NuGet, para aquellos que se preocupan)
Todos los niveles están predeterminados en "error", aunque puede apagarlos "off". Sin embargo, no puedo pensar por qué NO querrías ver errores
Puedes cambiarlos así:
Para más documentos, consulte la documentación
T
fuente
Encontré un fragmento de código un poco más avanzado en esta url. Consejo de JavaScript: busto y deshabilitar console.log :
fuente
Desarrollé una biblioteca para este caso de uso: https://github.com/sunnykgupta/jsLogger
caracteristicas:
log
,warn
,error
,info
.Está abierto a modificaciones y se actualizará cada vez que surjan nuevas sugerencias.
fuente
Esto debería anular todos los métodos de window.console. Puede ponerlo en la parte superior de la sección de sus scripts, y si está en un marco PHP solo puede imprimir este código cuando el entorno de su aplicación es de producción, o si algún tipo de indicador de depuración está desactivado. Entonces tendría todos sus registros en su código trabajando en entornos de desarrollo o en modo de depuración.
fuente
Yo escribí esto:
Desafortunadamente no funciona en modo estricto.
Entonces, usando
console.fn.setEnabled = setEnabled
y luegoconsole.fn.setEnabled(false)
dóndefn
podría haber casi cualquier función de consola. Para su caso sería:También escribí esto:
entonces solo necesita poner el
FLAGS
valor predeterminado (antes de ejecutar el código anterior), comoFLAGS.LOG = false
y la función de registro se deshabilitaría de manera predeterminada, y aún así podría habilitarla llamandoconsole.log.setEnabled(true)
fuente
console.log.setEnabled(true)
y comenzar a ver registrosvar debug = false; debug && console.log(1/3)
porque no necesita evaluar el contenido del registro si no está habilitado (en este caso1/3
no se evaluará), no pierda la línea de llamada y puede habilitar También es fácil (si no vars como consts).Mi solución integral para deshabilitar / anular todas las
console.*
funciones está aquí .Por supuesto, asegúrese de incluirlo después de verificar el contexto necesario. Por ejemplo, solo se incluye en el lanzamiento de producción, no está bombardeando ningún otro componente crucial, etc.
Citando aquí:
fuente
Si está usando gulp, puede usar este complemento:
fuente
Una simplificación de https://stackoverflow.com/a/46189791/871166
fuente
Puede usar javascript AOP (por ejemplo, jquery-aop ) para interceptar todas las llamadas a console.debug / log (around) y no continuar con la invocación real si alguna variable global se establece en false.
Incluso podría hacer una llamada ajax (de vez en cuando) para que pueda cambiar el comportamiento de registro habilitado / deshabilitado en el servidor, que puede ser muy interesante para habilitar la depuración cuando se enfrenta a un problema en un entorno de ensayo o similar.
fuente
Puede usar logeek , le permite controlar la visibilidad de sus mensajes de registro. Así es como lo haces:
También puede
logeek.show('nothing')
deshabilitar totalmente cada mensaje de registro.fuente
Después de investigar un poco y desarrollar este problema, encontré esta solución que ocultará advertencias / Errores / Registros según su elección.
Agregue este código antes del complemento JQuery (por ejemplo, /../jquery.min.js) incluso si se trata de un código JavaScript que no requiere JQuery. Porque algunas advertencias están en JQuery.
¡¡Gracias!!
fuente
Escribí una solución ES2015 (usar solo con Webpack ).
Descripción:
logger.disable()
- deshabilitar todos los mensajes de la consolalogger.enable()
- habilitar todos los mensajes de la consolalogger.log('message1', 'message2')
- Funciona exactamente como console.log.logger.warn('message1', 'message2')
- Funciona exactamente como console.warn.logger.error('message1', 'message2')
- Funciona exactamente como console.error. Feliz codificación ..fuente