Simpan console.log di Chrome ke file


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.


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 .


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.


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


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.


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.



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


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

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


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.


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.