366 Stimmen

Wie kann ich schnell und bequem alle console.log-Anweisungen in meinem Code deaktivieren?

Gibt es eine Möglichkeit, alle console.log Anweisungen in meinem JavaScript-Code zu Testzwecken?

0voto

Stijn Geukens Punkte 15139

Sie könnten Javascript AOP verwenden (z.B. jquery-aop ), um alle Aufrufe von console.debug/log (around) abzufangen und nicht mit dem eigentlichen Aufruf fortzufahren, wenn eine globale Variable auf false gesetzt ist.

Sie könnten sogar einen Ajax-Aufruf (hin und wieder), so dass Sie das Protokoll aktivieren / deaktivieren Verhalten auf dem Server, die sehr interessant sein kann, um Debugging zu ermöglichen, wenn ein Problem in einer Staging-Umgebung oder so konfrontiert zu tun.

0voto

Weilory Punkte 1697
console.log('pre');
/* pre content */ 
// define a new console
let preconsole = Object.assign({}, window.console);
let aftconsole = Object.assign({}, window.console, {
    log: function(text){
        preconsole.log(text);
        preconsole.log('log');
    }
});
console = aftconsole;
/* content */

console.log('content');

/* end of content */
console = preconsole;
console.log('aft');

0voto

Archimedes Trajano Punkte 28004

Wenn Sie React verwenden, können Sie Hooks verwenden, um es zu verwalten, so dass es auf den Bereich Ihrer Komponente beschränkt ist

import { useEffect, useRef } from "react";

type LoggingReplacements = {
  debug?: typeof console["debug"];
  error?: typeof console["error"];
  info?: typeof console["info"];
  log?: typeof console["log"];
  warn?: typeof console["warn"];
};
/**
 * This replaces console.XXX loggers with custom implementations.  It will restore console log on unmount of the component.
 * @param replacements a map of replacement loggers.  They're all optional and only the functions defined will be replaced.
 */
export function useReplaceLogging({
  debug,
  error,
  info,
  log,
  warn,
}: LoggingReplacements): void {
  const originalConsoleDebug = useRef(console.debug);
  const originalConsoleError = useRef(console.error);
  const originalConsoleInfo = useRef(console.info);
  const originalConsoleLog = useRef(console.log);
  const originalConsoleWarn = useRef(console.warn);
  if (debug) {
    console.debug = debug;
  }
  if (error) {
    console.error = error;
  }
  if (info) {
    console.info = info;
  }
  if (log) {
    console.log = log;
  }
  if (warn) {
    console.warn = warn;
  }
  useEffect(() => {
    return function restoreConsoleLog() {
      console.debug = originalConsoleDebug.current;
      console.error = originalConsoleError.current;
      console.info = originalConsoleInfo.current;
      console.log = originalConsoleLog.current;
      console.warn = originalConsoleWarn.current;
    };
  }, []);
}

Code mit Tests unter https://github.com/trajano/react-hooks/tree/master/src/useReplaceLogging

-1voto

Victor Lazaro Punkte 325

Ich habe diesen Thread gefunden, nachdem ich es selbst herausgefunden hatte. Hier ist meine Lösung:

const testArray = {
  a: 1,
  b: 2
};
const verbose = true; //change this to false to turn off all comments
const consoleLog = (...message) => {
  return verbose ? console.log(...message) : null;
};

console.log("from console.log", testArray);
consoleLog("from consoleLog", testArray);
// use consoleLog() for the comments you want to be able to toggle.

-1voto

Iman Mohamadi Punkte 5918

Sie können verwenden logeek Sie ermöglicht es Ihnen, die Sichtbarkeit Ihrer Protokollnachrichten zu kontrollieren. So machen Sie das:

<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

Sie können auch logeek.show('nothing') um alle Protokollmeldungen vollständig zu deaktivieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X