Come salvare l'output di un console.log (oggetto) in un file?


240

Ho provato a usarlo JSON.stringify(object), ma non si riduce all'intera struttura e gerarchia.

D'altra parte lo console.log(object)fa ma non riesco a salvarlo.

In console.loguscita è possibile espandere uno per uno tutti i bambini e selezionare e copiare / incollare, ma la struttura è troppo grande per questo.



Stai cercando di salvare console.log dal browser per scopi di sviluppo? Potrebbe essere utile se hai spiegato qual è il tuo obiettivo finale.
Travis,

1
@MichaelS Non ho trovato l'oggetto nel file di registro.
Eduard Florinescu,

@travis Voglio esportare un oggetto in JSON, ma tutta la gerarchia, anche le sue proprietà e le proprietà delle sue proprietà. Voglio praticamente ottenere "l'interfaccia" di un oggetto tranne l'implementazione delle funzioni.
Eduard Florinescu,

2
@MichaelS, quelle domande riguardano il salvataggio dell'intero registro, questa domanda riguarda il salvataggio di un singolo oggetto. Sono distinti dal mio punto di vista.
James McMahon,

Risposte:


307

Aggiornamento: ora puoi semplicemente fare clic con il tasto destro

Fare clic con il tasto destro> Salva con nome nel pannello Console per salvare i messaggi registrati in un file.

Risposta originale:

Puoi utilizzare questo frammento di devtools mostrato di seguito per creare un metodo console.save. Crea un FileBlob dall'input e quindi lo scarica automaticamente.

(function(console){

console.save = function(data, filename){

    if(!data) {
        console.error('Console.save: No data')
        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)

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


2
Non vengo da coloro che abbandonano "Grazie" ovunque fino a quando la risposta non viene bloccata per impedire "grazie". Ma grazie. Costruirò un'estensione.
Léon Pelletier

14
La funzione Salva con nome in realtà non ha aiutato. Non salva l'intero oggetto JSON (nel mio caso, avevo una matrice di oggetti, le proprietà degli oggetti non erano esportate nel file di output). Ma si spera, il buon vecchio frammento di devtool che hai incollato ha funzionato come un fascino. Grazie
M. Kejji,

1
se salva come non funzionava, allora è una regressione. dovresti presentare un bug su crbug.com
Patrick,

1
@ ishandutta2007 non dovresti scaricare alcun frammento: ora è integrato nella console.
Patrick,

10
Il clic destro non eseguirà un salvataggio profondo dell'oggetto.
user1032531,

246

Nel caso abbiate un oggetto registrato:

  • Fare clic con il tasto destro sull'oggetto nella console e fare clic Store as a global variable
  • l'output sarà qualcosa di simile temp1
  • digitare console copy(temp1)
  • incolla nel tuo editor di testo preferito

1
Ho anche scoperto che incollandolo in konklone.io/json puoi farlo rapidamente in un file CSV e da lì in Excel.
PeteW,

9
Ricevo solo [oggetto oggetto]
norbidrak il

1
La console dice "indefinito", ma ciò non significa che se fallito. Lo copia ancora negli appunti :)
Decano del

1
Soluzione eccezionale. Grazie mille!
Ben Rondeau,

1
Di gran lunga la soluzione più semplice e affidabile!
Chris B.

130

È possibile utilizzare il comando API Chrome DevTools Utilitiescopy() per copiare negli appunti la rappresentazione in formato stringa dell'oggetto specificato.

Se hai molti oggetti, puoi effettivamente JSON.stringify () tutti i tuoi oggetti e continuare ad aggiungerli a una stringa. Ora usa il copy()metodo per copiare la stringa completa negli appunti.


13
Utilizzo: copia (oggetto)
antoine,

Nota: è possibile utilizzarerequire("util").format(...) invece di applicare JSON.stringify()uno per uno. Il utilmodulo su NPM funziona sia su Node.js che sui browser Web.
Константин Ван,

2
Se si digita copia (oggetto) e viene restituito "non definito", questo è effettivamente successo. L'oggetto è ora negli Appunti e può essere incollato.
Decano del

7

Esiste un plugin javascript open source che fa proprio questo - debugout.js

Debugout.js registra e salva console.logs in modo che l'applicazione possa accedervi. Divulgazione completa, l'ho scritto. Formatta i diversi tipi in modo appropriato, può gestire oggetti e matrici nidificati e, facoltativamente, inserire un timestamp accanto a ciascun registro. Attiva e disattiva la registrazione in tempo reale in un unico posto.


Ricevo un erroreSyntaxError: export declarations may only appear at top level of a module --> debugout.js:9
Senura Dissanayake

@SenuraDissanayake prova ora - ho dovuto ripristinare le PR di qualcuno che non ho testato: /
inorganik

3

fare clic destro sulla console .. fare clic su Salva con nome .. è così semplice .. otterrai un file di testo di output


semplicemente senza alcuna indicazione di ciò che è errore vs calante vs registro.
Paulius Liekis


2

Esiste un altro strumento open source che ti consente di salvare tutto l' console.logoutput in un file sul tuo server: JS LogFlush (plug!).

JS LogFlush è una soluzione di registrazione JavaScript integrata che include:

  • sostituzione cross-browser UI-less di console.log - sul lato client.
  • sistema di archiviazione dei log - sul lato server.

dimostrazione


2

È davvero tardi per la festa, ma forse aiuterà qualcuno. La mia soluzione sembra simile a quella che l'OP ha descritto come problematica, ma forse è una funzionalità che Chrome offre ora, ma non allora. Ho provato a fare clic con il pulsante destro del mouse e salvare il file .log dopo che l'oggetto è stato scritto sulla console, ma tutto ciò che mi ha dato è stato un file di testo con questo:

console.js: 230 Fatto: Array (50000) [0… 9999] [10000 ... 19999] [20000 ... 29999] [30000 ... 39999] [40000 ... 49999] lunghezza: 50000__proto__: Array (0)

che non era di alcuna utilità per nessuno.

Ciò che ho finito per fare è stato trovare il console.log(data)codice, rilasciarne un punto di interruzione e quindi digitare JSON.Stringify(data)la console che mostrava l'intero oggetto come una stringa JSON e la console Chrome in realtà ti dà un pulsante per copiarlo . Quindi incollalo in un editor di testo e troverai il tuo JSON

inserisci qui la descrizione dell'immagine


dice che alla fine il testo lungo è stato troncato , se la tua copia copia copia l'intero 20,6 MB?
Eduard Florinescu,

1
@EduardFlorinescu sì, tutto
Adam Hey
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.