Apakah ada cara cepat untuk membuat Chrome mengeluarkan stempel waktu dalam console.log
penulisan (seperti yang dilakukan Firefox). Atau apakah menambahkan new Date().getTime()
satu-satunya pilihan?
javascript
google-chrome
UpTheCreek
sumber
sumber
Jawaban:
Di Chrome, ada opsi adalah Pengaturan Konsol (Alat Pengembang -> Konsol -> Pengaturan [sudut kanan atas]) bernama "Tampilkan cap waktu" yang persis seperti yang saya butuhkan.
Saya baru saja menemukannya. Tidak ada peretasan kotor lainnya yang diperlukan yang menghancurkan placeholder dan menghapus tempat di kode tempat pesan-pesan itu masuk.
Pembaruan untuk Chrome 68+
Pengaturan "Tampilkan stempel waktu" telah dipindahkan ke panel Preferensi dari "Pengaturan DevTools", ditemukan di sudut kanan atas laci DevTools:
sumber
Coba ini:
Atau ini, jika Anda menginginkan cap waktu:
Untuk mencatat lebih dari satu hal dan dengan cara yang baik (seperti representasi pohon objek):
Dengan format string ( JSFiddle )
Output dengan itu:
PS: Diuji hanya di Chrome.
PPS:
Array.prototype.slice
tidak sempurna di sini karena akan dicatat sebagai array objek daripada serangkaian objek.sumber
Anda dapat menggunakan profiler alat dev.
"Nama pengatur waktu" harus sama. Anda dapat menggunakan beberapa instance timer dengan nama yang berbeda.
sumber
console.timeStamp('foo')
itu hanya muncul sebagai titik kuning di timeline. Itu tidak berhasil bagi saya ketika menggunakan nama dengan spasi tho.console.log
atau penebangan sama sekaliSaya awalnya menambahkan ini sebagai komentar, tetapi saya ingin menambahkan tangkapan layar karena setidaknya satu orang tidak dapat menemukan opsi (atau mungkin itu tidak tersedia dalam versi khusus mereka karena alasan tertentu).
Pada Chrome 68.0.3440.106 (dan sekarang diperiksa di 72.0.3626.121) saya harus
sumber
Saya mengkonversi
arguments
ke Array menggunakanArray.prototype.slice
sehingga saya bisaconcat
dengan Array lain dari apa yang ingin saya tambahkan, kemudian meneruskannya keconsole.log.apply(console, /*here*/)
;Sepertinya itu
arguments
bisaArray.prototype.unshift
diedit juga, tapi saya tidak tahu apakah mengubahnya seperti ini adalah ide yang baik / akan memiliki efek samping lainsumber
+new Date
danDate.now()
merupakan cara alternatif untuk mendapatkan cap waktusumber
Jika Anda menggunakan browser Google Chrome, Anda dapat menggunakan api konsol chrome:
Waktu yang berlalu antara dua panggilan ini ditampilkan di konsol.
Untuk info detail, silakan lihat tautan dokumen: https://developers.google.com/chrome-developer-tools/docs/console
sumber
Dari Chrome 68:
"Tampilkan stempel waktu" dipindahkan ke pengaturan
Kotak centang Tampilkan stempel waktu sebelumnya di Pengaturan Konsol Pengaturan Konsol telah pindah ke Pengaturan .
sumber
Coba ini juga:
Fungsi ini menempatkan stempel waktu, nama file, dan nomor baris sebagai sama dengan bawaan
console.log
.sumber
log
Fungsi yang dibuat dengan cara ini membekukan cap waktu tetap; Anda harus menjalankannya kembali setiap kali Anda menginginkan waktu terkini [= Tanggal terkini; -]. Dimungkinkan untuk membuat fungsi ini tetapi Anda harus menggunakannya sepertimklog()(...)
bukanlog()
.Jika Anda ingin menyimpan informasi nomor baris (setiap pesan menunjuk ke panggilan .log (), tidak semua mengarah ke pembungkus kami), Anda harus menggunakannya
.bind()
. Anda dapat menambahkan argumen cap waktu tambahan melaluiconsole.log.bind(console, <timestamp>)
tetapi masalahnya adalah Anda harus menjalankannya kembali setiap kali untuk mendapatkan fungsi yang terikat dengan cap waktu baru. Cara canggung untuk melakukannya adalah fungsi yang mengembalikan fungsi terikat:yang kemudian harus digunakan dengan panggilan ganda:
TETAPI kita dapat membuat panggilan pertama tersirat dengan menginstal properti dengan fungsi pengambil:
Sekarang Anda hanya menelepon
console.log(...)
dan secara otomatis itu menambahkan cap waktu!Anda bahkan dapat mencapai perilaku ajaib ini dengan sederhana
log()
alih-alihconsole.log()
dengan melakukanObject.defineProperty(window, "log", ...)
.Lihat https://github.com/pimterry/loglevel untuk menggunakan pembungkus konsol aman yang dilakukan dengan baik
.bind()
dengan kompatibilitas mundur.Lihat https://github.com/eligrey/Xccessors untuk kompatibilitas mundur dari
defineProperty()
ke legacy__defineGetter__
API. Jika tidak ada API properti yang berfungsi, Anda harus mundur ke fungsi wrapper yang mendapat cap waktu baru setiap waktu. (Dalam hal ini Anda kehilangan info nomor baris, tetapi cap waktu masih akan ditampilkan.)Boilerplate: Waktu memformat seperti yang saya suka:
sumber
Ini menambahkan fungsi "log" ke lingkup lokal (menggunakan
this
) menggunakan argumen sebanyak yang Anda inginkan:Jadi Anda bisa menggunakannya:
Keluaran sesuatu seperti ini:
sumber
memperluas solusi yang sangat bagus "dengan format string" dari JSmyth juga dukungan
console.log
variasi (log
,debug
,info
,warn
,error
)09:05:11.518
vs.2018-06-13T09:05:11.518Z
)console
atau fungsinya tidak ada di browser.
sumber
Utl.js
atas . jadi memungkinkan (komentar atas permintaan masuk / keluar) dariUtl.consoleWithTimestamps(...)
-override mungkin masuk akalSaya memiliki ini di sebagian besar aplikasi Node.JS. Ini juga berfungsi di browser.
sumber
Solusi ES6:
tempat
timestamp()
pengembalian sebenarnya memformat stempel waktu danlog
menambahkan stempel waktu dan menyebarkan semua argumen sendiriconsole.log
sumber
Penyempurnaan pada jawaban oleh JSmyth:
Ini:
.log
sumber
console.log(document, window)
, yaitu tanpa asumsi format string, maka Anda akan mendapatkan sesuatu. seperti2014-02-15T20:02:17.284Z > [object HTMLDocument] Window {…}
bukannyadocument
diwakili sebagai pohon objek yang dapat diupgrade.