311 votes

Comment enregistrer la sortie d'un console.log(object) dans un fichier?

J'ai essayé d'utiliser JSON.stringify(object), mais cela ne descend pas dans toute la structure et la hiérarchie.

En revanche, console.log(object) le fait, mais je ne peux pas le sauvegarder.

Dans la sortie de console.log, je peux développer un par un tous les enfants et sélectionner et copier/coller, mais la structure est trop grande pour cela.

0 votes

Essayez-vous de sauvegarder le console.log du navigateur à des fins de développement ? Il pourrait être utile si vous expliquiez quel est votre objectif final.

1 votes

@MichaelS Je n'ai pas trouvé l'objet dans le fichier journal.

376voto

Patrick Points 3099

Mise à jour: Vous pouvez maintenant simplement faire un clic droit

Faites un clic droit > Enregistrer sous dans le panneau Console pour enregistrer les messages consignés dans un fichier.

Réponse d'origine:

Vous pouvez utiliser ce bout de code de l'outil de développement ci-dessous pour créer une méthode console.save. Cela crée un Blob de fichier à partir de l'entrée, puis le télécharge automatiquement.

(function(console){

console.save = function(data, filename){

    if(!data) {
        console.error('Console.save: Pas de données')
        return;
    }

    if(!filename) filename = 'console.json'

    if(typeof data === "object"){
        data = JSON.stringify(data, undefined, 4)
    }

    var blob = new Blob([data], {type: 'text/json'}),
        e    = document.createEvent('MouseEvents'),
        a    = document.createElement('a')

    a.download = filename
    a.href = window.URL.createObjectURL(blob)
    a.dataset.downloadurl =  ['text/json', a.download, a.href].join(':')
    e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
    a.dispatchEvent(e)
 }
})(console)

Source: http://bgrins.github.io/devtools-snippets/#console-save

3 votes

Je ne suis pas de ceux qui laissent tomber des "merci" partout jusqu'à ce que la réponse soit bloquée pour éviter les 'merci'. Mais merci. Je vais construire une extension.

30 votes

La fonction Enregistrer sous n'a en réalité pas aidé. Elle ne sauvegarde pas l'intégralité de l'objet JSON (dans mon cas, j'avais un tableau d'objets, les propriétés des objets n'ont pas été exportées dans le fichier de sortie). Mais heureusement, le bon vieux extrait de code d'outil de développement que vous avez collé a fonctionné à merveille. Merci

1 votes

Si l'enregistrement n'a pas fonctionné, il s'agit alors d'une régression. Vous devriez soumettre un bug sur crbug.com.

142voto

bthota Points 261

Vous pouvez utiliser la API d'utilitaires Chrome DevTools copy() pour copier la représentation en chaîne de caractères de l'objet spécifié dans le presse-papiers.

Si vous avez beaucoup d'objets, vous pouvez en fait utiliser JSON.stringify() sur tous vos objets et continuer à les ajouter à une chaîne. Maintenant, utilisez la méthode copy() pour copier la chaîne complète dans le presse-papiers.

0 votes

Note: vous pouvez utiliser require("util").format(...) au lieu d'appliquer JSON.stringify() un par un. Le module util sur NPM fonctionne à la fois sur Node.js et les navigateurs Web.

4 votes

Si vous tapez copy(object) et qu'il retourne 'undefined', c'est en réalité un succès. L'objet est maintenant dans votre presse-papiers et peut être collé.

8voto

inorganik Points 2591

Il existe un plugin javascript open-source qui fait exactement cela - debugout.js

Debugout.js enregistre et sauvegarde les console.logs afin que votre application puisse y accéder. En toute transparence, je l'ai écrit. Il formate différents types de manière appropriée, peut gérer des objets et des tableaux imbriqués, et peut éventuellement mettre un horodatage à côté de chaque journal. Il permet également de basculer le journal en direct en un seul endroit.

0 votes

Je reçois une erreur - SyntaxError: les déclarations d'exportation ne peuvent apparaître qu'au niveau supérieur d'un module --> debugout.js:9

0 votes

@SenuraDissanayake essayez maintenant - j'ai dû revenir sur une PR que je n'ai pas testée :/

3voto

Alexander Volkov Points 241

Vous pouvez utiliser la bibliothèque l2i (https://github.com/seriyvolk83/logs2indexeddb) pour enregistrer tout ce que vous mettez dans console.log et ensuite invoquer

l2i.download();

pour télécharger un fichier avec les journaux.

3voto

hindmost Points 3310

Il existe un autre outil open-source qui vous permet de sauvegarder toutes les sorties de console.log dans un fichier sur votre serveur - JS LogFlush (plug!).

JS LogFlush est une solution de journalisation JavaScript intégrée qui comprend :

  • remplacement sans interface utilisateur de console.log sur tous les navigateurs - côté client.
  • système de stockage de journaux - côté serveur.

Démo

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X