web-dev-qa-db-fra.com

Comment lire à partir de la console de Chrome en JavaScript

Je voudrais mettre un bouton dans mon application où si vous appuyez dessus, il obtiendra le contenu de tout ce qui a été écrit sur la console et m'envoie un e-mail (pour signaler des bugs). Je sais que je peux garder une variable et à chaque fois que je fais une console.log, j'ajoute également le message à cette variable, mais j'essaie de garder la consommation de mémoire de l'application faible, il serait donc beaucoup plus efficace de la récupérer dans le console.

Existe-t-il un moyen de récupérer les messages de la console à partir de javascript?

Merci

45
Mike

Tu ne peux pas. Le contenu de la console ne peut pas être lu à partir de JavaScript.

Ce que vous pouvez faire, c'est accrocher le console.log fonction pour que vous stockiez quand il se connecte:

console.stdlog = console.log.bind(console);
console.logs = [];
console.log = function(){
    console.logs.Push(Array.from(arguments));
    console.stdlog.apply(console, arguments);
}

console.logs contient tout ce qui a été enregistré. Vous pouvez le nettoyer à tout moment en faisant console.logs.length = 0;.

Vous pouvez toujours créer un journal standard, sans stockage, en appelant console.stdlog.

58
Denys Séguret

obtenir toutes les données de la console

comment lire l'erreur de la console du navigateur dans js?

Comment lire à partir de la console de Chrome en JavaScript

https://www.quora.com/How-do-I-read-console-window-errors-from-Chrome-using-JavaScript

journaux

console.defaultLog = console.log.bind(console);
console.logs = [];
console.log = function(){
    // default &  console.log()
    console.defaultLog.apply(console, arguments);
    // new & array data
    console.logs.Push(Array.from(arguments));
}

erreur

console.defaultError = console.error.bind(console);
console.errors = [];
console.error = function(){
    // default &  console.error()
    console.defaultError.apply(console, arguments);
    // new & array data
    console.errors.Push(Array.from(arguments));
}

prévenir

console.defaultWarn = console.warn.bind(console);
console.warns = [];
console.warn = function(){
    // default &  console.warn()
    console.defaultWarn.apply(console, arguments);
    // new & array data
    console.warns.Push(Array.from(arguments));
}

déboguer

console.defaultDebug = console.debug.bind(console);
console.debugs = [];
console.debug = function(){
    // default &  console.debug()
    console.defaultDebug.apply(console, arguments);
    // new & array data
    console.debugs.Push(Array.from(arguments));
}
4
xgqfrms-gildata

J'ai utilisé ce code dans le passé pour capturer toute l'activité de la console et le stocker avec les types et horodatages dans console.everything pour le renvoyer au serveur pour diagnostiquer les problèmes de saisie des données du formulaire. J'exécute ce code le plus tôt possible dans le <head> élément.

if (console.everything === undefined)
{
    console.everything = [];

    console.defaultLog = console.log.bind(console);
    console.log = function(){
        console.everything.Push({"type":"log", "datetime":Date().toLocaleString(), "value":Array.from(arguments)});
        console.defaultLog.apply(console, arguments);
    }
    console.defaultError = console.error.bind(console);
    console.error = function(){
        console.everything.Push({"type":"error", "datetime":Date().toLocaleString(), "value":Array.from(arguments)});
        console.defaultError.apply(console, arguments);
    }
    console.defaultWarn = console.warn.bind(console);
    console.warn = function(){
        console.everything.Push({"type":"warn", "datetime":Date().toLocaleString(), "value":Array.from(arguments)});
        console.defaultWarn.apply(console, arguments);
    }
    console.defaultDebug = console.debug.bind(console);
    console.debug = function(){
        console.everything.Push({"type":"debug", "datetime":Date().toLocaleString(), "value":Array.from(arguments)});
        console.defaultDebug.apply(console, arguments);
    }
}
3
QA Collective