Apakah ada cara untuk mematikan semua console.log
pernyataan dalam kode JavaScript saya, untuk tujuan pengujian?
javascript
debugging
console
Zack Burt
sumber
sumber
PICOLOG_LEVEL
(node) dan itu super kecil. Kurang dari 900 byte diperkecil dan di-zip. Penafian: Saya penulis.console
fungsi. Lihat saja stapp.space/disable-javascript-console-on-productionJawaban:
Definisikan kembali fungsi console.log dalam skrip Anda.
Itu saja, tidak ada lagi pesan untuk menghibur.
EDIT:
Memperluas gagasan Cide. Logger kustom yang dapat Anda gunakan untuk mengaktifkan / menonaktifkan log dari kode Anda.
Dari konsol Firefox saya:
Bagaimana cara menggunakan 'logger' di atas? Dalam acara siap Anda, panggilan logger.disableLogger sehingga pesan konsol tidak dicatat. Tambahkan panggilan ke logger.enableLogger dan logger.disableLogger di dalam metode yang Anda ingin log pesan ke konsol.
sumber
console.log
... Mengapa tidak hanya memiliki boolean dan fungsi kondisional untuk logging?Berikut ini lebih menyeluruh:
Ini akan nol metode umum di konsol jika ada, dan mereka dapat dipanggil tanpa kesalahan dan hampir tidak ada overhead kinerja. Dalam kasus browser seperti IE6 tanpa konsol, metode dummy akan dibuat untuk mencegah kesalahan. Tentu saja ada banyak fungsi lagi di Firebug, seperti jejak, profil, waktu, dll. Mereka dapat ditambahkan ke daftar jika Anda menggunakannya dalam kode Anda.
Anda juga dapat memeriksa apakah debugger memiliki metode khusus atau tidak (yaitu, IE) dan nol yang tidak didukung:
sumber
Sejauh yang saya tahu dari dokumentasi , Firebug tidak menyediakan variabel apa pun untuk beralih status debug. Sebagai gantinya, bungkus console.log () dalam bungkus yang memanggilnya dengan syarat, yaitu:
Agar tidak harus mengubah semua panggilan yang ada, Anda dapat menggunakan ini sebagai gantinya:
sumber
Anda tidak harus!
Ini bukan praktik yang baik untuk menimpa fungsi bawaan. Juga tidak ada jaminan bahwa Anda akan menekan semua output, perpustakaan lain yang Anda gunakan dapat mengembalikan perubahan Anda dan ada fungsi lain yang dapat menulis ke konsol;
.dir()
,.warning()
,.error()
,.debug()
,.assert()
DllSeperti yang disarankan beberapa orang, Anda bisa mendefinisikan
DEBUG_MODE
variabel dan mencatatnya secara kondisional. Bergantung pada kompleksitas dan sifat kode Anda, mungkin ide yang baik untuk menulis objek / fungsi logger Anda sendiri yang membungkus objek konsol dan memiliki kemampuan ini bawaan. Itu akan menjadi tempat yang tepat untuk berurusan dengan instrumentasi .Yang mengatakan, untuk tujuan 'pengujian' Anda dapat menulis tes daripada mencetak ke konsol. Jika Anda tidak melakukan pengujian apa pun, dan
console.log()
kalimat itu hanyalah bantuan untuk menulis kode Anda, cukup hapus saja .sumber
"other libraries you use may revert your changes"
: jika saya menonaktifkanconsole.log
di awal, mereka tidak dapat kembali ke fungsi yang lama. Yah, mereka dapat menulis ulangconsole.log
kode sumber, tetapi mengapa?"it may be a good idea to write your own logger object/function that wraps around the console object"
: Saya sudah melakukan ini di masa lalu dan itu ide yang buruk. Jejak keluaran konsol mengacu pada pembungkus dan bukan ke baris yang memanggilnya, membuat debugging lebih sulit.console.log('Look ma, it reaches this point');
di kode Anda, ketika semuanya gagal Anda memang bisa menggunakandebugger;
instruksi."the code is coupled to that infrastructure"
: kode mungkin, tetapi polanya tidak. Jika Anda membuat template dasar umum untuk halaman Anda di mana fungsi logging dinonaktifkan, itu adalah logika yang dapat Anda terapkan di mana-mana."the later shouldn't be browser-aware"
: yah, jadi Anda sebaiknya tidak menggunakan JS: PSaya menyadari ini adalah posting lama tetapi masih muncul di bagian atas hasil Google, jadi di sini adalah solusi non-jQuery yang lebih elegan yang bekerja di Chrome, FF, dan IE terbaru.
sumber
Saya tahu Anda bertanya bagaimana cara menonaktifkan console.log, tetapi ini mungkin yang Anda cari. Dengan cara ini Anda tidak perlu mengaktifkan atau menonaktifkan konsol secara eksplisit. Itu hanya mencegah kesalahan konsol yang sial untuk orang-orang yang tidak membuka atau menginstalnya.
sumber
Ubah saja flag
DEBUG
untuk mengganti fungsi console.log. Ini harus melakukan trik.sumber
function myLog(msg) { if (debug) { console.log(msg); } }
Saya terkejut bahwa dari semua jawaban itu tidak ada yang menggabungkan:
Saya akan lakukan ini:
sumber
Setelah saya mencari masalah ini juga dan mencobanya di aplikasi cordova saya, saya hanya ingin memperingatkan setiap pengembang untuk windows phone untuk tidak menimpa
karena aplikasi akan macet saat startup.
Itu tidak akan crash jika Anda mengembangkan lokal jika Anda beruntung, tetapi mengirimkan di toko itu akan mengakibatkan aplikasi crash.
Timpa saja
jika perlu.
Ini berfungsi di aplikasi saya:
sumber
Jika Anda menggunakan IE7, konsol tidak akan ditentukan. Jadi versi yang lebih ramah IE adalah:
sumber
Ini adalah gabungan dari jawaban dari SolutionYogi dan Chris S. Ini mempertahankan nomor baris console.log dan nama file. Contoh jsFiddle .
sumber
Jika Anda menggunakan Grunt, Anda dapat menambahkan tugas untuk menghapus / mengomentari pernyataan console.log. Karenanya konsol.log tidak lagi dipanggil.
https://www.npmjs.org/package/grunt-remove-logging-calls
sumber
Saya sudah menggunakan yang berikut untuk menangani masalah dia: -
Atur debug ke 1 untuk mengaktifkan debugging. Kemudian gunakan fungsi logger saat mengeluarkan teks debug. Ini juga diatur untuk menerima dua parameter.
Jadi, bukannya
menggunakan
sumber
Saya telah menggunakan winston logger sebelumnya.
Saat ini saya menggunakan kode sederhana di bawah ini dari pengalaman:
Setel variabel lingkungan dari cmd / command line (pada Windows):
Atau, Anda bisa memiliki variabel dalam kode Anda jika suka, tetapi di atas lebih baik.
Mulai ulang cmd / command line, atau, IDE / editor seperti Netbeans
Memiliki kode seperti di bawah ini:
Sekarang gunakan semua konsol. * Seperti di bawah ini:
Sekarang, berdasarkan pada pengaturan LOG_LEVEL Anda yang dibuat pada titik 1 (seperti,
setx LOG_LEVEL log
dan mulai ulang perintah), beberapa di atas akan dicetak, yang lain tidak akan mencetakHarapan itu membantu.
sumber
Peringatan: Steker tak tahu malu!
Anda juga dapat menggunakan sesuatu seperti objek JsTrace saya untuk memiliki pelacakan modular dengan kemampuan "switching" tingkat modul untuk hanya mengaktifkan apa yang ingin Anda lihat pada saat itu.
http://jstrace.codeplex.com
(Juga memiliki paket NuGet, bagi mereka yang peduli)
Semua level default untuk "kesalahan", meskipun Anda dapat mematikannya "off". Padahal, saya tidak bisa memikirkan mengapa Anda TIDAK ingin melihat kesalahan
Anda dapat mengubahnya seperti ini:
Untuk lebih banyak dokumen, lihat Dokumentasi
T
sumber
Saya menemukan sedikit kode yang lebih maju di url JavaScript Tip ini: Bust and Disable console.log :
sumber
Saya mengembangkan perpustakaan untuk usecase ini: https://github.com/sunnykgupta/jsLogger
Fitur:
log
,warn
,error
,info
.Terbuka untuk modifikasi dan akan diperbarui setiap kali muncul saran baru.
sumber
Ini harus mengganti semua metode window.console. Anda dapat meletakkannya di bagian paling atas dari bagian skrip Anda, dan jika Anda menggunakan kerangka PHP Anda hanya dapat mencetak kode ini ketika lingkungan aplikasi Anda sedang diproduksi, atau jika semacam bendera debug dinonaktifkan. Maka Anda akan memiliki semua log Anda dalam kode Anda bekerja di lingkungan pengembangan atau dalam mode debug.
sumber
Saya menulis ini:
Sayangnya itu tidak berfungsi saat menggunakan mode ketat.
Jadi menggunakan
console.fn.setEnabled = setEnabled
dan kemudian diconsole.fn.setEnabled(false)
manafn
bisa hampir semua fungsi konsol. Untuk kasus Anda adalah:Saya menulis ini juga:
demikian maka Anda hanya perlu memasukkan
FLAGS
nilai default (sebelum menjalankan kode di atas), sepertiFLAGS.LOG = false
dan fungsi log akan dinonaktifkan secara default, dan Anda masih bisa mengaktifkannya memanggilconsole.log.setEnabled(true)
sumber
console.log.setEnabled(true)
dan mulai melihat logvar debug = false; debug && console.log(1/3)
karena Anda tidak perlu mengevaluasi konten log jika tidak diaktifkan (dalam hal ini1/3
tidak akan dievaluasi), jangan kehilangan saluran pemanggil dan dapat mengaktifkan juga mudah (jika tidak vars sebagai const).Solusi komprehensif saya untuk menonaktifkan / menimpa semua
console.*
fungsi ada di sini .Tentu saja, pastikan Anda memasukkannya setelah memeriksa konteks yang diperlukan. Misalnya, hanya termasuk dalam rilis produksi, itu tidak mengebom komponen penting lainnya dll.
Mengutipnya di sini:
sumber
Jika Anda menggunakan tegukan, maka Anda dapat menggunakan plugin ini :
sumber
Penyederhanaan https://stackoverflow.com/a/46189791/871166
sumber
Anda dapat menggunakan javascript AOP (mis. Jquery-aop ) untuk mencegat semua panggilan ke console.debug / log (sekitar) dan tidak melanjutkan dengan permintaan aktual jika beberapa variabel global disetel ke false.
Anda bahkan bisa melakukan panggilan ajax (sekarang dan kemudian) sehingga Anda dapat mengubah perilaku yang diaktifkan / dinonaktifkan log di server yang bisa sangat menarik untuk mengaktifkan debug ketika menghadapi masalah dalam lingkungan pementasan atau semacamnya.
sumber
Anda dapat menggunakan logeek , Ini memungkinkan Anda untuk mengontrol visibilitas pesan log Anda. Inilah cara Anda melakukannya:
Anda juga
logeek.show('nothing')
dapat menonaktifkan sepenuhnya setiap pesan log.sumber
Setelah melakukan riset dan pengembangan untuk masalah ini, saya menemukan solusi ini yang akan menyembunyikan peringatan / Kesalahan / Log sesuai pilihan Anda.
Tambahkan kode ini sebelum plugin JQuery (misalnya /../jquery.min.js) meskipun ini adalah kode JavaScript yang tidak memerlukan JQuery. Karena beberapa peringatan ada di JQuery itu sendiri.
Terima kasih!!
sumber
Saya menulis solusi ES2015 (hanya digunakan dengan Webpack ).
Deskripsi:
logger.disable()
- Nonaktifkan semua pesan konsollogger.enable()
- aktifkan semua pesan konsollogger.log('message1', 'message2')
- bekerja persis seperti console.log.logger.warn('message1', 'message2')
- Bekerja persis seperti console.warn.logger.error('message1', 'message2')
- Bekerja persis seperti console.error. Selamat coding ..sumber