Bagaimana cara menyimpan output dari console.log (objek) ke file?

240

Saya mencoba menggunakan JSON.stringify(object), tetapi tidak turun pada seluruh struktur dan hierarki.

Di sisi lain console.log(object)melakukan itu tetapi saya tidak bisa menyimpannya.

Dalam console.logoutput saya dapat memperluas satu per satu semua anak dan pilih dan salin / tempel tetapi strukturnya besar untuk itu.

Eduard Florinescu
sumber
Apakah Anda mencoba untuk menyimpan console.log dari browser untuk keperluan pengembangan? Mungkin membantu jika Anda menjelaskan apa tujuan akhir Anda.
travis
1
@MichaelS Saya tidak menemukan objek di file log.
Eduard Florinescu
@ Travis Saya ingin mengekspor objek ke JSON, tetapi semua hierarki, juga propertinya dan properti propertinya. Saya ingin secara praktis mendapatkan "antarmuka" dari suatu objek kecuali penerapan fungsi-fungsinya.
Eduard Florinescu
2
@MichaelS, pertanyaan itu adalah tentang menyimpan seluruh log, pertanyaan ini adalah tentang menyimpan satu objek. Mereka berbeda dari sudut pandang saya.
James McMahon

Jawaban:

307

Pembaruan: Anda sekarang dapat mengklik kanan

Klik kanan> Simpan sebagai pada panel Konsol untuk menyimpan pesan yang dicatat ke file.

Jawaban asli:

Anda dapat menggunakan potongan devtools ini di bawah ini untuk membuat metode console.save. Itu membuat FileBlob dari input, dan kemudian secara otomatis mengunduhnya.

(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)

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

Patrick
sumber
2
Saya bukan dari mereka yang menjatuhkan "Terima kasih" di mana-mana sampai jawabannya diblokir untuk mencegah dari 'terima kasih'. Tapi terima kasih. Akan membangun ekstensi.
Léon Pelletier
14
Fitur Simpan sebagai ... sebenarnya tidak membantu. Itu tidak menyimpan objek JSON lengkap (dalam kasus saya, saya memiliki array objek, properti objek tidak diekspor dalam file output). Tapi mudah-mudahan, potongan devtool tua yang bagus yang kamu tempel bekerja seperti mantra. Terima kasih
M. Kejji
1
jika simpan sebagai tidak berfungsi, maka itu adalah regresi. Anda harus mengajukan bug di crbug.com
Patrick
1
@ ishandutta2007 Anda tidak boleh mengunduh cuplikan apa pun - itu sudah ada di konsol sekarang.
Patrick
10
Klik kanan tidak akan melakukan penyimpanan objek yang dalam.
user1032531
246

Jika Anda memiliki objek yang dicatat:

  • Klik kanan pada objek di konsol dan klik Store as a global variable
  • outputnya akan seperti temp1
  • ketik konsol copy(temp1)
  • rekatkan ke editor teks favorit Anda
artemdev
sumber
1
Saya juga menemukan bahwa menempelkan ini ke konklone.io/json Anda kemudian dapat dengan cepat mendapatkan ini ke file CSV dan dari sana ke Excel.
PeteW
9
Saya hanya mendapatkan [objek Objek]
norbidrak
1
Konsol mengatakan "tidak terdefinisi", tetapi itu tidak berarti jika gagal. Masih menyalinnya ke clipboard :)
Dean
1
Solusi yang mengagumkan. Terima kasih banyak!
Ben Rondeau
1
Sejauh ini solusi paling sederhana dan paling dapat diandalkan!
Chris B.
130

Anda dapat menggunakan perintah API Chrome DevTools Utilitiescopy() untuk menyalin representasi string dari objek yang ditentukan ke clipboard.

Jika Anda memiliki banyak objek maka Anda dapat benar-benar JSON.stringify () semua objek Anda dan terus menambahkannya ke string. Sekarang gunakan copy()metode untuk menyalin string lengkap ke papan klip.

bthota
sumber
13
Penggunaan: salin (objek)
antoine
Catatan: Anda dapat menggunakanrequire("util").format(...) alih-alih menerapkan JSON.stringify()satu per satu. The utilmodul NPM bekerja pada kedua Node.js dan web browser.
Константин Ван
2
Jika Anda mengetik salinan (objek) dan mengembalikan 'tidak terdefinisi', itu sebenarnya berhasil. Objek tersebut sekarang ada di clipboard Anda, dan dapat ditempelkan.
Dekan
7

Ada plugin javascript open-source yang melakukan hal itu - debugout.js

Debugout.js merekam dan menyimpan console.logs sehingga aplikasi Anda dapat mengaksesnya. Pengungkapan penuh, saya menulisnya. Ini memformat berbagai jenis dengan tepat, dapat menangani objek dan array bersarang, dan secara opsional dapat menempatkan stempel waktu di sebelah setiap log. Ini juga mengaktifkan live-logging di satu tempat.

anorganik
sumber
Saya mendapat kesalahan -SyntaxError: export declarations may only appear at top level of a module --> debugout.js:9
Senura Dissanayake
@SenuraDissanayake coba sekarang - saya harus mengembalikan PR seseorang yang tidak saya uji: /
inorganik
3

klik kanan pada konsol .. klik simpan sebagai .. ini sederhana .. Anda akan mendapatkan file teks output

Akhil_S
sumber
hanya tanpa indikasi apa yang error vs memudarnya vs log.
Paulius Liekis
2

Anda dapat menggunakan perpustakaan l2i( https://github.com/seriyvolk83/logs2indexeddb ) untuk menyimpan semua yang Anda masukkan console.log dan memohon

l2i.download();

untuk mengunduh file dengan log.

Alexander Volkov
sumber
2

Ada alat open-source lain yang memungkinkan Anda untuk menyimpan semua console.logoutput dalam file di server Anda - JS LogFlush (plug!).

JS LogFlush adalah solusi logging JavaScript terintegrasi yang meliputi:

  • lintas-browser UI-kurang penggantian console.log - di sisi klien.
  • sistem penyimpanan log - di sisi server.

Demo

paling belakang
sumber
2

Ini benar-benar terlambat ke pesta, tapi mungkin itu akan membantu seseorang. Solusi saya tampaknya mirip dengan apa yang oleh OP dijelaskan sebagai masalah, tetapi mungkin itu adalah fitur yang ditawarkan Chrome sekarang, tetapi tidak saat itu. Saya mencoba mengklik kanan dan menyimpan file .log setelah objek ditulis ke konsol, tetapi semua yang memberi saya adalah file teks dengan ini:

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

yang tidak ada gunanya bagi siapa pun.

Apa yang akhirnya saya lakukan adalah menemukan console.log(data)dalam kode, menjatuhkan breakpoint di atasnya dan kemudian mengetik JSON.Stringify(data)di konsol yang menampilkan seluruh objek sebagai string JSON dan konsol Chrome benar-benar memberi Anda tombol untuk menyalinnya . Kemudian tempel ke editor teks dan ada JSON Anda

masukkan deskripsi gambar di sini

Adam Hey
sumber
ia mengatakan pada akhir teks panjang itu dipotong , jika pers Anda Copy melakukannya menyalin seluruh 20.6MB?
Eduard Florinescu
1
@EduardFlorinescu ya, semuanya
Adam Hey