Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

243
Vistas
No se puede anular el script de la aplicación de Google console.log()

Tengo una gran secuencia de comandos de la aplicación de Google que escribe muchas líneas de registro en el explorador de registros. Quiero poder deshabilitar o habilitar el registro si es necesario.

Aquí hay un código que parece funcionar como se esperaba en un navegador. Aquí allowlog está configurado en el código, pero se recuperará de una fuente externa. Esto no es importante para el propósito de esta publicación.

La función de extracción automática anula console.log y bloquea el registro si es necesario.

 let allowLog = false; function func1(){ console.log("func1 log msg"); } (function(){ //test log 1 console.log("self extracting"); //keep ref to global console.log const _consolelog = console.log; //test log 2 - verify it works _consolelog("self extracting2"); //override global console.log console.log = function(val){ if (allowLog){ _consolelog(val); _consolelog("allowing"); }else{ _consolelog("log disabled"); } } })();

Este código no funciona en la secuencia de comandos de la aplicación de Google y los registros siguen escribiendo.

En el script de la aplicación puedo ver console.log("self extracting"); y _consolelog("self extracting2"); registrar mensajes cuando se carga el módulo. Sin embargo, cuando se llama a func1 , el registro se escribe aunque allowLog = false . _consolelog("allowing"); ni _consolelog("log disabled"); NO está registrado. el archivo console.log global no se anula.

¿Por qué es eso y cómo (si es que lo es) es posible solucionarlo?

El registro esperado para el código anterior es ( allowLog=false ):

  • autoextraíble
  • autoextracción2
  • registro deshabilitado

Para el caso donde allowLog=true :

  • autoextraíble
  • autoextracción2
  • func1 registrar mensaje
  • permitiendo

Las dos primeras líneas autoextracción y autoextracción2 deben imprimirse solo una vez, cuando se ejecuta la función de autoinvocación anónima. El otro debe provenir de la función interna que anula la global.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Esto se debe a que no se writable en la propiedad de log de la console . Puede verificar eso usando Object.getOwnPropertyDescriptors . Sin embargo, sigue siendo configurable . Por lo tanto, puede delete la propiedad log y establecer un nuevo valor.

 let allowLog = false; (function(){ //test log 1 console.log("self extracting"); //keep ref to global console.log const _consolelog = console.log; //test log 2 - verify it works _consolelog("self extracting2"); //override global console.log //console.log(Object.getOwnPropertyDescriptors(console)); /*{ toString: { value: [Function], writable: true, enumerable: true, configurable: true }, time: { value: [Function], writable: true, enumerable: true, configurable: true }, timeEnd: { value: [Function], writable: true, enumerable: true, configurable: true }, error: { value: [Function], writable: false, enumerable: true, configurable: true }, info: { value: [Function], writable: false, enumerable: true, configurable: true }, log: { value: [Function], writable: false, enumerable: true, configurable: true }, warn: { value: [Function], writable: false, enumerable: true, configurable: true } }*/ delete console.log; console.log = function (val){ if (allowLog){ _consolelog(val); _consolelog("allowing"); }else{ _consolelog("log disabled"); } } })(); function func1(){ console.log("func1 log msg"); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Quieres decir esto?

 Logger.log('Test1'); // it will print as usual var _log = Logger.log Logger.log = function(_){}; Logger.log('Test2'); // <-- it will not print since we disabled the 'log()' method Logger.log = _log; // restore the method 'log()' back Logger.log('Test3'); // it will print again

Producción:

 Test1 Test3

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda