Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

241
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!