Simpan console.log di Chrome ke file

173

Apakah ada yang tahu cara untuk menyimpan output console.log di Chrome ke file? Atau bagaimana cara menyalin teks dari konsol?

Katakanlah Anda menjalankan beberapa jam tes fungsional dan Anda punya ribuan baris output console.log di Chrome. Bagaimana Anda menyimpannya atau mengekspornya?

eeejay
sumber

Jawaban:

98

Saya perlu melakukan hal yang sama dan ini adalah solusi yang saya temukan:

  1. Aktifkan pencatatan dari baris perintah menggunakan bendera:

    --enable-logging --v=1

    Ini mencatat semua yang dilakukan Chrome secara internal, tetapi juga mencatat semua console.log()pesan juga. File log dipanggil chrome_debug.logdan terletak di User Data Directory.

  2. Saring file log yang Anda dapatkan untuk baris CONSOLE(\d+).

Perhatikan bahwa log konsol tidak muncul bersama --incognito.

Waleed Abdulla
sumber
3
tampaknya tidak berfungsi di mac os saya, ada log internal tetapi tidak ada Console.log ...
Nico
7
Ini tidak menyimpan info console.log ke file log. Di Windows 8.
coderama
4
Di Mac saya menemukan file log di ~ / Library / Dukungan Aplikasi / Google / Chrome / chrome_debug.log
vaichidrewar
2
Ini masih berfungsi untuk saya di OSX 10.10.3 /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-logging --v=1dengan log disimpan di~/Library/Application Support/Google/Chrome/chrome_debug.log
mateuscb
3
Saya tidak mendapatkan apa pun selain log krom internal. console.log()Baris saya tidak ada dalam file itu. Adakah yang punya perbaikan untuk ini?
xandermonkey
187

Kabar baik

Alat dev Chrome sekarang memungkinkan Anda untuk menyimpan output konsol ke file secara asli

  1. Buka konsol
  2. Klik kanan
  3. Pilih "simpan sebagai .."

simpan konsol ke file

Instruksi Pengembang Chrome di sini .

adardesign
sumber
3
Apakah ini dapat dilakukan dengan menggunakan pintasan keyboard atau menjalankan perintah di konsol?
Sarthak Singhal
1
Berikut adalah daftar semua pintasan devTools developer.chrome.com/devtools/docs/shortcuts
adardesign
11
Ini sepertinya tidak menyalin jejak tumpukan
Michael
2
Bisakah Anda membuka file itu di konsol lagi? Jika demikian, bagaimana Anda melakukannya?
Mahathi Vempati
7
Perhatikan bahwa ini tidak akan memperluas objek - masih akan mencetak objek besar dalam bentuk terpotong, misalnya {a: 1, b: 2, c: 3, ...}.
Galen Long
29

Ada plugin javascript open-source yang melakukan hal itu, tetapi untuk browser apa pun - 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. Anda juga dapat beralih live-logging di satu tempat, dan tanpa harus menghapus semua pernyataan logging Anda.

anorganik
sumber
4
Sebagai referensi, meskipun ini terlihat seperti alat yang hebat, itu tidak akan menangkap output dari browser, seperti ketika gambar gagal, atau output konsol bawaan lainnya, dan itu mengharuskan Anda menulis ulang pernyataan log Anda menggunakan sintaks khusus.
Lukus
@Lukus tentu saja tidak akan menangkap keluaran browser (Anda perlu patch monyet untuk melakukan itu) tetapi tidak ada sintaks khusus yang diperlukan. lulus argumen yang sama seperti yang Anda lakukan console.log
inorganik
1
@Inorganik Saya sedang mencari cara untuk tes selenium untuk menangkap output konsol, tetapi itu akan digunakan untuk layanan pengujian sehingga kami tidak memiliki kendali atas situs web pengguna. Saya pikir alat Anda keren, tetapi akan membutuhkan pengguna untuk menulis ulang pernyataan console.log yang ada sebagai bugout.log, itulah yang saya maksud dengan sintaks khusus. Tampaknya sejauh ini tidak ada cara lintas-browser untuk melakukannya saat ini.
Lukus
Tidak, itu tidak akan berhasil untuk kita. Kita perlu menyimpan catatan hasil pengujian situs web kompleks dengan jumlah besar skrip pihak ketiga, yang berjalan pada domain yang berbeda dan kita tidak dapat mengubah sebagian besar dari mereka.
Mike Keskinov
23

Saya telah menemukan cara yang hebat dan mudah untuk ini.

  1. Di konsol - klik kanan pada objek konsol yang dicatat

  2. Klik 'Simpan sebagai variabel global'

  3. Lihat nama variabel baru - mis. Itu adalah variabelName1

  4. Ketik konsol: JSON.stringify (variableName1)

  5. Salin konten string variabel: misalnya {"a": 1, "b": 2, "c": 3}

masukkan deskripsi gambar di sini

  1. Buka editor online JSON: mis. Https://jsoneditoronline.org/

masukkan deskripsi gambar di sini

Menggabungkan
sumber
1
Tampak kikuk di permukaan tetapi itu bekerja dengan cukup baik. Dalam versi yang lebih baru, di bagian bawah output ada tombol "Salin". Saya cukup menekan itu, kemudian memiliki skrip kecil yang menyimpan clipboard sebagai file .json dan terbuka di Visual Studio yang sangat mudah dibaca. Satu-satunya perubahan adalah saya melakukan JSON.stringify (temp1, null, 2) untuk membuatnya lebih mudah dibaca. Trik di bawah ini untuk menyimpan konsol juga berfungsi dengan baik.
Wade Hatler
8

Untuk file log yang lebih baik (tanpa omong kosong Chrome-debug) gunakan:

--enable-logging --log-level=0

alih-alih --v=1yang terlalu banyak info.

Itu masih akan memberikan kesalahan dan peringatan seperti yang biasanya Anda lihat di konsol Chrome.

pembaruan 18 Mei 2020: Sebenarnya, saya pikir ini tidak lagi benar. Saya tidak dapat menemukan pesan konsol di dalam level log apa pun ini.

JohnP2
sumber
7

Ini mungkin atau mungkin tidak membantu tetapi pada Windows Anda dapat membaca log konsol menggunakan Event Tracing untuk Windows

http://msdn.microsoft.com/en-us/library/ms751538.aspx

Tes integrasi kami dijalankan di .NET jadi saya menggunakan metode ini untuk menambahkan log konsol ke hasil pengujian kami. Saya telah membuat proyek konsol sampel untuk diperagakan di sini: https://github.com/jkells/chrome-trace

--enable-logging --v = 1 tampaknya tidak berfungsi pada versi terbaru Chrome.

Jared Kells
sumber
3

Banyak jawaban bagus tapi mengapa tidak menggunakan JSON.stringify (your_variable)? Kemudian ambil isinya melalui salin dan tempel (hapus kutipan luar). Saya memposting jawaban yang sama ini juga di: Bagaimana cara menyimpan output dari console.log (objek) ke file?

pengguna1889992
sumber
1
Untuk masalah tentang " Uncaught TypeError: Mengubah struktur melingkar ke JSON " , mungkin ini bisa membantu.
KtX2SkD
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

Jika Anda menjalankan server Apache di hosting Anda (jangan lakukan ini di server produksi), Anda juga dapat memposting hasilnya ke skrip alih-alih menulisnya ke konsol.

Jadi alih-alih console.log, Anda dapat menulis:

JSONP('http://localhost/save.php', {fn: 'filename.txt', data: json});

Maka save.phpbisa melakukan ini

<?php

 $fn = $_REQUEST['fn'];
 $data = $_REQUEST['data'];

 file_put_contents("path/$fn", $data);
supersan
sumber
1
Saya benar-benar berharap tidak ada yang mengunggah ini ke server dalam produksi 🙁. Ini dikerjakan dengan bahaya ke server.
Dave Mackintosh
Apakah Anda tidak membaca baris pertama: "Jika Anda menjalankan server Apache di localhost Anda"?
supersan
Pilihan Anda pada posting saya tidak dibenarkan karena itu akan sangat bodoh bagi seseorang untuk menjalankan server produksi di "localhost" (di mana JSONP meminta data posting).
supersan
Saya tidak pernah memilih jawaban Anda, saya hanya menunjukkan bahaya yang ditimbulkan oleh skrip ini jika pernah diunggah ke server yang tersedia untuk umum.
Dave Mackintosh
1

Di Linux (setidaknya), Anda dapat mengatur CHROME_LOG_FILE di lingkungan agar chrome menulis log aktivitas Konsol ke file bernama setiap kali dijalankan. Log ditimpa setiap kali chrome dimulai. Dengan cara ini, jika Anda memiliki sesi otomatis yang menjalankan chrome, Anda tidak perlu mengubah cara chrome dimulai, dan log ada di sana setelah sesi berakhir.

ekspor CHROME_LOG_FILE = chrome.log

DrChandra
sumber
0

Saat ini sangat mudah - klik kanan setiap item yang ditampilkan di log konsol dan pilih save as dan simpan seluruh output log ke file di komputer Anda.

brianlmerritt
sumber
0

solusi lain di utas ini tidak berfungsi pada mac saya. Berikut adalah logger yang menyimpan representasi string sebentar-sebentar menggunakan ajax. gunakan dengan console.savealih - alihconsole.log

var logFileString="";
var maxLogLength=1024*128;

console.save=function(){
  var logArgs={};

  for(var i=0; i<arguments.length; i++) logArgs['arg'+i]=arguments[i];
  console.log(logArgs);

  // keep a string representation of every log
  logFileString+=JSON.stringify(logArgs,null,2)+'\n';

  // save the string representation when it gets big
  if(logFileString.length>maxLogLength){
    // send a copy in case race conditions change it mid-save
    saveLog(logFileString);
    logFileString="";
  }
};

tergantung pada apa yang Anda butuhkan, Anda dapat menyimpan string itu atau hanya console.logitu dan salin dan tempel. inilah ajax untuk Anda jika Anda ingin menyimpannya:

function saveLog(data){
  // do some ajax stuff with data.
  var xhttp = new XMLHttpRequest();

  xhttp.onreadystatechange = function(){
    if (this.readyState == 4 && this.status == 200) {}
  }

  xhttp.open("POST", 'saveLog.php', true);
  xhttp.send(data);
}

yang saveLog.phpharus menambahkan data ke suatu tempat file log. Saya tidak membutuhkan bagian itu jadi saya tidak memasukkannya di sini. :)

https://www.google.com/search?q=php+append+to+log

jaya
sumber