¿Cómo deshabilitar rápida y convenientemente todas las declaraciones de console.log en mi código?

257

¿Hay alguna manera de apagar todo console.log declaraciones en mi código JavaScript, con fines de prueba?

Zack Burt
fuente
11
use un editor de texto que admita "reemplazar todo" y reemplace "console.log" por "//console.log"
helloandre
55
@helloandre: eso se vuelve un poco cansado si usa el registro, la información, la advertencia de depuración y el error
UpTheCreek
Con suerte llegaremos a un punto en el que las implementaciones del navegador omitan automáticamente las declaraciones de la consola a menos que la herramienta de depuración del navegador esté habilitada.
faintsignal
2
Las respuestas a continuación son geniales, pero no tiene que reinventar la rueda en este caso. Echa un vistazo a picolog . Tiene una API compatible con la consola (NodeJS), por lo que puede usarla como un reemplazo directo. Admite niveles de registro listos para usar, funciona en el navegador, en NodeJS y en Nashorn, se puede configurar fácilmente desde la cadena de consulta (navegador) o la variable de entorno PICOLOG_LEVEL(nodo) y es súper pequeño. Menos de 900 bytes minificados y comprimidos. Descargo de responsabilidad: soy el autor.
Stijn de Witt
Hay una manera simple de anular todas las consolefunciones. Solo mire stapp.space/disable-javascript-console-on-production
Piotr Stapp el

Respuestas:

427

Redefina la función console.log en su script.

console.log = function() {}

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:

var logger = function()
{
    var oldConsoleLog = null;
    var pub = {};

    pub.enableLogger =  function enableLogger() 
                        {
                            if(oldConsoleLog == null)
                                return;

                            window['console']['log'] = oldConsoleLog;
                        };

    pub.disableLogger = function disableLogger()
                        {
                            oldConsoleLog = console.log;
                            window['console']['log'] = function() {};
                        };

    return pub;
}();

$(document).ready(
    function()
    {
        console.log('hello');

        logger.disableLogger();
        console.log('hi', 'hiya');
        console.log('this wont show up in console');

        logger.enableLogger();
        console.log('This will show up!');
    }
 );

¿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.

SolutionYogi
fuente
¿Proporcionar detalles sobre lo que no funciona? ¿La línea anterior te da un error? En caso afirmativo, ¿cuál es el mensaje de error?
SolutionYogi
1
Funciona para mí en IE8. ;-)
Eugene Lazutkin el
El código sobrescribe y restaura la función console.log. Si IE7 admite el método console.log, debería funcionar.
SolutionYogi
3
console.log = function () {} no parece funcionar en Firefox. Aún aparece el error 'la consola no está definida'.
DA.
2
Que horrible solución. Modificando console.log... ¿Por qué no simplemente tener una función booleana y una función condicional para iniciar sesión?
Demencia el
76

Lo siguiente es más completo:

var DEBUG = false;
if(!DEBUG){
    if(!window.console) window.console = {};
    var methods = ["log", "debug", "warn", "info"];
    for(var i=0;i<methods.length;i++){
        console[methods[i]] = function(){};
    }
}

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:

if(window.console && !console.dir){
var methods = ["dir", "dirxml", "trace", "profile"]; //etc etc
    for(var i=0;i<methods.length;i++){
        console[methods[i]] = function(){};
    }
}
mwilcox
fuente
Esto funcionó para mí perfectamente, aunque lo modifiqué un poco, verifiqué el entorno (solo quiero que esté desactivado en la producción)
Muganwas
27

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:

DEBUG = true; // set to false to disable debugging
function debug_log() {
    if ( DEBUG ) {
        console.log.apply(this, arguments);
    }
}

Para no tener que cambiar todas las llamadas existentes, puede usar esto en su lugar:

DEBUG = true; // set to false to disable debugging
old_console_log = console.log;
console.log = function() {
    if ( DEBUG ) {
        old_console_log.apply(this, arguments);
    }
}
Cide
fuente
1
Gracias, aunque esto significa que necesito reescribir todas mis declaraciones de console.log como debug.log.
Zack Burt el
Esta es la forma correcta de hacerlo, por supuesto, si está comenzando desde cero.
OpenSource
3
También es la forma correcta de hacerlo si tiene una buena función de buscar / reemplazar en su editor.
BaroqueBobcat el
2
No es necesario escribir su propio contenedor, por cierto, al menos si está utilizando jQuery. El jQuery Debugging Plugin funciona muy bien. Como beneficio adicional, proporciona la emulación de console.log en los navegadores sin él. trainofthoughts.org/blog/2007/03/16/jquery-plugin-debug
Nelson
El único problema [menor], por supuesto, es que necesita instalar un complemento. :) Es bueno saberlo, sin embargo, ¡gracias!
Cide el
17

¡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_MODEvariable 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 .

istepaniuk
fuente
77
"other libraries you use may revert your changes": si lo deshabilito console.logdesde el principio, no pueden volver a la función anterior. Bueno, pueden reescribir el console.logcó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.
Marco Sulla
3
@LucasMalor "al principio" implica que el código está acoplado a esa infraestructura, lo que limita su reutilización. Sin embargo, es difícil generalizar; Un juego, algunas animaciones DOM no son lo mismo que la lógica de dominio dentro de un SPA complejo, la última no debe ser consciente del navegador, y mucho menos saber algo llamado "consola". En ese caso, debe tener una estrategia de prueba adecuada en lugar de piratear algo console.log('Look ma, it reaches this point');en su código, cuando todo lo demás falla, puede usar las debugger;instrucciones.
istepaniuk
"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: P
Marco Sulla
3
@MarcoSulla Creo que está escribiendo código más limpio. Decir "... no deberías usar JS" es un poco pesado. Idealmente, como programador, no importa cuál sea su entorno, debe modularizar tanto como sea posible; si no le interesan los navegadores, puede implementarlo en más lugares: esa es una dependencia menos para preocuparse por romper sus cosas. Entonces, en mi humilde opinión, sí, en realidad tiene razón. Tenga en cuenta que comenzó diciendo "Si crea una plantilla básica común ..." que en sí misma introduce una dependencia. Este tipo de pensamiento es lo que complica el software. Comida para el pensamiento.
dudewad
1
Adobe SiteCatalyics arroja una gran cantidad de basura en mi consola y hace una molestia de depuración en algunos casos. Por lo tanto, ser capaz de deshabilitar temporalmente console.log cuando ejecuto una llamada de un tercero sería muy útil para mí
spinn
16

Me 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.

(function (original) {
    console.enableLogging = function () {
        console.log = original;
    };
    console.disableLogging = function () {
        console.log = function () {};
    };
})(console.log);
Joey Schooley
fuente
12

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.

if(typeof(console) === 'undefined') {
    var console = {};
    console.log = console.error = console.info = console.debug = console.warn = console.trace = console.dir = console.dirxml = console.group = console.groupEnd = console.time = console.timeEnd = console.assert = console.profile = function() {};
}
Scott Greenfield
fuente
2
Para deshabilitar el registro específico de IE, vea la respuesta de Chris S.
GuruM
11

Simplemente cambie la bandera DEBUGpara anular la función console.log. Esto debería funcionar.

var DEBUG = false;
// ENABLE/DISABLE Console Logs
if(!DEBUG){
  console.log = function() {}
}
Swanidhi
fuente
2
Iría un paso más allá y envolvería esto en una función / clase de registrador. Algo como esto:function myLog(msg) { if (debug) { console.log(msg); } }
sleblanc
Si usa Angular, puede usarlo como una configuración global en su archivo application.js y usarlo como una propiedad global para activar / desactivar los registros. Recuerde, la consola no estará indefinida si tiene la barra de herramientas de desarrolladores abierta en IE.
Swanidhi
10

Me sorprende que de todas esas respuestas nadie combine:

  • No jquery
  • Función anónima para no contaminar el espacio de nombres global
  • Manejar el caso donde window.console no está definido
  • Simplemente modifique la función .log de la consola

Yo iría por esto:

(function () {

    var debug = false

    if (debug === false) {
        if ( typeof(window.console) === 'undefined') { window.console = {}; }
        window.console.log = function () {};
    }
})()
Xavier13
fuente
9

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

    console.log

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

    window.console.log 

si lo necesitas.

Esto funciona en mi aplicación:

   try {
        if (typeof(window.console) != "undefined") {
            window.console = {};
            window.console.log = function () {
            };
            window.console.info = function () {
            };
            window.console.warn = function () {
            };
            window.console.error = function () {
            };
        }

        if (typeof(alert) !== "undefined") {
            alert = function ()
            {

            }
        }

    } catch (ex) {

    }
graphefruit
fuente
Gracias por la advertencia". SIN EMBARGO, tuve mi aplicación basada en cordova lanzada en la tienda GooglePlay, la probé con dispositivos telefónicos y todo estuvo bien. ¿Puedo suponer que su advertencia se limitó a la tienda de aplicaciones "basada en Windows"? ... SIN EMBARGO, es un buen consejo poner las operaciones dentro del soporte de try-catch en caso de que explote. De ahí el pulgar hacia arriba.
Panini Luncher
8

Si usa IE7, la consola no se definirá. Entonces, una versión más amigable con IE sería:

if (typeof console == "undefined" || typeof console.log == "undefined") 
{
   var console = { log: function() {} }; 
}
Chris S
fuente
5

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 .

// Avoid global functions via a self calling anonymous one (uses jQuery)
(function(MYAPP, $, undefined) {
    // Prevent errors in browsers without console.log
    if (!window.console) window.console = {};
    if (!window.console.log) window.console.log = function(){};

    //Private var
    var console_log = console.log;  

    //Public methods
    MYAPP.enableLog = function enableLogger() { console.log = console_log; };   
    MYAPP.disableLog = function disableLogger() { console.log = function() {}; };

}(window.MYAPP = window.MYAPP || {}, jQuery));


// Example Usage:
$(function() {    
    MYAPP.disableLog();    
    console.log('this should not show');

    MYAPP.enableLog();
    console.log('This will show');
});
Justin
fuente
3

He estado usando lo siguiente para tratar el problema:

var debug = 1;
var logger = function(a,b){ if ( debug == 1 ) console.log(a, b || "");};

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

console.log("my","log");

utilizar

logger("my","log");
Michae Pavlos Michael
fuente
3

He usado winston logger anteriormente.

Hoy en día estoy usando el siguiente código más simple por experiencia:

  1. Establezca la variable de entorno desde cmd / línea de comando (en Windows):

    cmd
    setx LOG_LEVEL info

O bien, podría tener una variable en su código si lo desea, pero más arriba es mejor.

  1. Reinicie cmd / línea de comando, o IDE / editor como Netbeans

  2. Tener abajo como código:

    console.debug = console.log;   // define debug function
    console.silly = console.log;   // define silly function
    
    switch (process.env.LOG_LEVEL) {
        case 'debug':
        case 'silly':
            // print everything
            break;
    
        case 'dir':
        case 'log':
            console.debug = function () {};
            console.silly = function () {};
            break;
    
        case 'info':
            console.debug = function () {};
            console.silly = function () {};
            console.dir = function () {};
            console.log = function () {};
            break;
    
        case 'trace':   // similar to error, both may print stack trace/ frames
        case 'warn':    // since warn() function is an alias for error()
        case 'error':
            console.debug = function () {};
            console.silly = function () {};
            console.dir = function () {};
            console.log = function () {};
            console.info = function () {};
            break;
    }
  3. Ahora use todas las consolas. * Como se muestra a continuación:

    console.error(' this is a error message '); // will print
    console.warn(' this is a warn message '); // will print
    console.trace(' this is a trace message '); // will print
    console.info(' this is a info message '); // will print, LOG_LEVEL is set to this
    
    console.log(' this is a log message '); // will NOT print
    console.dir(' this is a dir message '); // will NOT print
    console.silly(' this is a silly message '); // will NOT print
    console.debug(' this is a debug message '); // will NOT print

Ahora, en función de la configuración de LOG_LEVEL realizada en el punto 1 (como, setx LOG_LEVEL logy reiniciar la línea de comando), algunos de los anteriores se imprimirán, otros no se imprimirán

Espero que haya ayudado.

Manohar Reddy Poreddy
fuente
2

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í:

Trace.traceLevel('ModuleName1', Trace.Levels.log);
Trace.traceLevel('ModuleName2', Trace.Levels.info);

Para más documentos, consulte la documentación

T

Tom McKearney
fuente
2

Encontré un fragmento de código un poco más avanzado en esta url. Consejo de JavaScript: busto y deshabilitar console.log :

var DEBUG_MODE = true; // Set this value to false for production

if(typeof(console) === 'undefined') {
   console = {}
}

if(!DEBUG_MODE || typeof(console.log) === 'undefined') {
   // FYI: Firebug might get cranky...
   console.log = console.error = console.info = console.debug = console.warn = console.trace = console.dir = console.dirxml = console.group = console.groupEnd = console.time =    console.timeEnd = console.assert = console.profile = function() {};
}
kikeenrique
fuente
2

Desarrollé una biblioteca para este caso de uso: https://github.com/sunnykgupta/jsLogger

caracteristicas:

  1. Invalida de forma segura el archivo console.log.
  2. Tenga cuidado si la consola no está disponible (oh sí, también debe tenerlo en cuenta).
  3. Almacena todos los registros (incluso si están suprimidos) para su posterior recuperación.
  4. Manijas principales funciones de la consola como log, warn, error, info.

Está abierto a modificaciones y se actualizará cada vez que surjan nuevas sugerencias.

Sunny R Gupta
fuente
2

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.

window.console = (function(originalConsole){
    var api = {};
    var props = Object.keys(originalConsole);
    for (var i=0; i<props.length; i++) {
        api[props[i]] = function(){};
    }
    return api;
})(window.console);
agm-dev
fuente
1

Yo escribí esto:

//Make a copy of the old console.
var oldConsole = Object.assign({}, console);

//This function redefine the caller with the original one. (well, at least i expect this to work in chrome, not tested in others)
function setEnabled(bool) {
    if (bool) {
        //Rewrites the disable function with the original one.
        console[this.name] = oldConsole[this.name];
        //Make sure the setEnable will be callable from original one.
        console[this.name].setEnabled = setEnabled;
    } else {
        //Rewrites the original.
        var fn = function () {/*function disabled, to enable call console.fn.setEnabled(true)*/};
        //Defines the name, to remember.
        Object.defineProperty(fn, "name", {value: this.name});
        //replace the original with the empty one.
        console[this.name] = fn;
        //set the enable function
        console[this.name].setEnabled = setEnabled

    }
}

Desafortunadamente no funciona en modo estricto.

Entonces, usando console.fn.setEnabled = setEnabledy luego console.fn.setEnabled(false)dónde fnpodría haber casi cualquier función de consola. Para su caso sería:

console.log.setEnabled = setEnabled;
console.log.setEnabled(false);

También escribí esto:

var FLAGS = {};
    FLAGS.DEBUG = true;
    FLAGS.INFO = false;
    FLAGS.LOG = false;
    //Adding dir, table, or other would put the setEnabled on the respective console functions.

function makeThemSwitchable(opt) {
    var keysArr = Object.keys(opt);
    //its better use this type of for.
    for (var x = 0; x < keysArr.length; x++) {
        var key = keysArr[x];
        var lowerKey = key.toLowerCase();
        //Only if the key exists
        if (console[lowerKey]) {
            //define the function
            console[lowerKey].setEnabled = setEnabled;
            //Make it enabled/disabled by key.
            console[lowerKey].setEnabled(opt[key]);
        }
    }
}
//Put the set enabled function on the original console using the defined flags and set them.
makeThemSwitchable(FLAGS);

entonces solo necesita poner el FLAGSvalor predeterminado (antes de ejecutar el código anterior), como FLAGS.LOG = falsey la función de registro se deshabilitaría de manera predeterminada, y aún así podría habilitarla llamandoconsole.log.setEnabled(true)

Gabriel De Oliveira Rohden
fuente
¿Crees que esto podría usarse para habilitar el console.log en el entorno de producción sobre la marcha? como abrir la consola de Chrome, ejecutar console.log.setEnabled(true)y comenzar a ver registros
Rodrigo Assis
1
@RodrigoAssis sí, funcionará. He creado esto solo para no perder la línea de llamada y habilitarla en cualquier lugar, pero esta no es la mejor manera de hacerlo. La mejor manera para los registros es usar la forma de cortocircuito como: var debug = false; debug && console.log(1/3)porque no necesita evaluar el contenido del registro si no está habilitado (en este caso 1/3no se evaluará), no pierda la línea de llamada y puede habilitar También es fácil (si no vars como consts).
Gabriel De Oliveira Rohden
1

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í:

"use strict";
(() => {
  var console = (window.console = window.console || {});
  [
    "assert", "clear", "count", "debug", "dir", "dirxml",
    "error", "exception", "group", "groupCollapsed", "groupEnd",
    "info", "log", "markTimeline", "profile", "profileEnd", "table",
    "time", "timeEnd", "timeStamp", "trace", "warn"
  ].forEach(method => {
    console[method] = () => {};
  });
  console.log("This message shouldn't be visible in console log");
})();

kmonsoor
fuente
1

Si está usando gulp, puede usar este complemento:

Instale este complemento con el comando:

npm install gulp-remove-logging

A continuación, agregue esta línea a su archivo de trago:

var gulp_remove_logging = require("gulp-remove-logging");

Por último, agregue los ajustes de configuración (ver más abajo) a su archivo de trago.

Configuración de tareas

gulp.task("remove_logging", function() {
     return gulp.src("src/javascripts/**/*.js")
    .pipe(
      gulp_remove_logging()
    )
    .pipe(
      gulp.dest(
        "build/javascripts/"
      )
    ); });
Andrew Nessin
fuente
1

Una simplificación de https://stackoverflow.com/a/46189791/871166

switch (process.env.LOG_LEVEL) {
  case 'ERROR':
    console.warn = function() {};
  case 'WARN':
    console.info = function() {};
  case 'INFO':
    console.log = function() {};
  case 'LOG':
    console.debug = function() {};
    console.dir = function() {};
}
7ynk3r
fuente
0

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.

Stijn Geukens
fuente
No he implementado tal solución, no la vi. Es teórico hasta ahora.
Stijn Geukens
0

Puede usar logeek , le permite controlar la visibilidad de sus mensajes de registro. Así es como lo haces:

<script src="bower_components/dist/logeek.js"></script>

logeek.show('security');

logeek('some message').at('copy');       //this won't be logged
logeek('other message').at('secturity'); //this would be logged

También puede logeek.show('nothing')deshabilitar totalmente cada mensaje de registro.

Iman Mohamadi
fuente
0

Después de investigar un poco y desarrollar este problema, encontré esta solución que ocultará advertencias / Errores / Registros según su elección.

    (function () {
    var origOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function () {        
        console.warn = function () { };
        window['console']['warn'] = function () { };
        this.addEventListener('load', function () {                        
            console.warn('Something bad happened.');
            window['console']['warn'] = function () { };
        });        
    };
})();

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!!

Sunny_Sid
fuente
0

Escribí una solución ES2015 (usar solo con Webpack ).

class logger {
  static isEnabled = true;

  static enable () {
    if(this.constructor.isEnabled === true){ return; }

    this.constructor.isEnabled = true;
  }

  static disable () {
    if(this.constructor.isEnabled === false){ return; }

    this.constructor.isEnabled = false;
  }

  static log () {
    if(this.constructor.isEnabled === false ) { return; }

    const copy = [].slice.call(arguments);

    window['console']['log'].apply(this, copy);
  }

  static warn () {
    if(this.constructor.isEnabled === false ) { return; }

    const copy = [].slice.call(arguments);

    window['console']['warn'].apply(this, copy);
  }

  static error () {
    if(this.constructor.isEnabled === false ) { return; }

    const copy = [].slice.call(arguments);

    window['console']['error'].apply(this, copy);
  }
}

Descripción:

  1. Junto con logger.enable y logger.disable, puede usar los métodos de consola. ['Log', 'warn', 'error'] y la clase logger.
  2. Al usar la clase logger para mostrar, habilitar o deshabilitar mensajes hace que el código sea mucho más limpio y fácil de mantener.
  3. El siguiente código le muestra cómo usar la clase logger:
    • logger.disable() - deshabilitar todos los mensajes de la consola
    • logger.enable() - habilitar todos los mensajes de la consola
    • logger.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 ..
Jaskaran Singh
fuente