Bagaimana saya bisa mencetak pesan ke konsol kesalahan, lebih disukai termasuk variabel?
Misalnya, sesuatu seperti:
print('x=%d', x);
Bagaimana saya bisa mencetak pesan ke konsol kesalahan, lebih disukai termasuk variabel?
Misalnya, sesuatu seperti:
print('x=%d', x);
Jawaban:
Instal Firebug dan kemudian Anda dapat menggunakan console.log(...)
dan console.debug(...)
, dll. (Lihat dokumentasi untuk lebih lanjut).
console.log()
dll harus bekerja di semua browser, termasuk IE. Namun, dalam semua kasus, Anda harus memiliki jendela debugger terbuka pada saat itu, jika tidak panggilan console
akan menghasilkan kesalahan.
console.error(message); //gives you the red errormessage
console.log(message); //gives the default message
console.warn(message); //gives the warn message with the exclamation mark in front of it
console.info(message); //gives an info message with an 'i' in front of the message
Anda juga dapat menambahkan CSS ke pesan logging Anda:
console.log('%c My message here', "background: blue; color: white; padding-left:10px;");
console.log
Anda dapat menggunakan css di dalam konsol: |
Pengecualian dimasukkan ke konsol JavaScript. Anda dapat menggunakannya jika Anda ingin Firebug dinonaktifkan.
function log(msg) {
setTimeout(function() {
throw new Error(msg);
}, 0);
}
Pemakaian:
log('Hello World');
log('another message');
throw
harus dibungkus dengan setTimeout
?
Salah satu cara yang baik untuk melakukan ini yang bekerja lintas-browser diuraikan dalam Debugging JavaScript: Membuang Peringatan Anda! .
throw()
jelas bukan cara untuk melakukan ini. Anda akan mendapat masalah cepat atau lambat. bagi saya itu lebih cepat :(
Berikut ini adalah solusi untuk pertanyaan literal tentang cara mencetak pesan ke konsol kesalahan browser, bukan konsol debugger. (Mungkin ada alasan bagus untuk memotong debugger.)
Seperti yang saya catat dalam komentar tentang saran untuk melempar kesalahan untuk mendapatkan pesan di konsol kesalahan, satu masalah adalah bahwa ini akan mengganggu utas eksekusi. Jika Anda tidak ingin menginterupsi utas, Anda dapat membuang kesalahan di utas terpisah, yang dibuat menggunakan setTimeout. Maka solusi saya (yang ternyata merupakan penjabaran dari Ivo Danihelka):
var startTime = (new Date()).getTime();
function logError(msg)
{
var milliseconds = (new Date()).getTime() - startTime;
window.setTimeout(function () {
throw( new Error(milliseconds + ': ' + msg, "") );
});
}
logError('testing');
Saya mencantumkan waktu dalam milidetik sejak waktu mulai karena batas waktu dapat membuat urutan pesanan Anda mungkin berubah.
Argumen kedua untuk metode Kesalahan adalah untuk nama file, yang merupakan string kosong di sini untuk mencegah keluaran dari nama file dan nomor baris yang tidak berguna. Dimungkinkan untuk mendapatkan fungsi pemanggil tetapi tidak dengan cara browser yang independen.
Akan lebih baik jika kita dapat menampilkan pesan dengan ikon peringatan atau pesan alih-alih ikon kesalahan, tetapi saya tidak dapat menemukan cara untuk melakukan itu.
Masalah lain dengan menggunakan lemparan adalah bahwa ia dapat ditangkap dan dibuang dengan cara coba-coba yang tertutup, dan menempatkan lemparan tersebut di utas terpisah untuk menghindari rintangan itu juga. Namun, masih ada cara lain kesalahan bisa ditangkap, yaitu jika window.oner handler diganti dengan yang melakukan sesuatu yang berbeda. Tidak bisa membantumu di sana.
Untuk benar-benar menjawab pertanyaan:
console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);
Alih-alih kesalahan, Anda juga dapat menggunakan info, log atau peringatan.
console.error(..)
adalah fitur non-standar dan tidak boleh digunakan dalam produksi. Apa pendapat Anda tentang hal ini? Apakah Anda memiliki saran untuk programmer pemula yang menggunakan console.error
vs console.log
?
console.log(...)
"non-standar". Dalam hal itu, console.error
sama stabilnya dengan console.log
.
Jika Anda menggunakan Firebug dan perlu mendukung IE, Safari atau Opera juga, Firebug Lite menambahkan dukungan console.log () ke browser ini.
The WebKit Web Inspektur juga mendukung Firebug konsol API (hanya tambahan kecil untuk jawaban Dan ini ).
Catatan tentang 'throw ()' yang disebutkan di atas. Tampaknya itu menghentikan eksekusi halaman sepenuhnya (saya memeriksa di IE8), jadi itu tidak sangat berguna untuk masuk "pada proses yang sedang berjalan" (suka melacak variabel tertentu ...)
Saran saya mungkin untuk menambahkan elemen textarea di suatu tempat di dokumen Anda dan untuk mengubah (atau menambahkan) nilainya (yang akan mengubah teksnya) untuk mencatat informasi kapan saja diperlukan ...
console.log()
,, throw()
dll. Selain itu, tidak ada yang salah dengan perilaku yang throw()
tampaknya Anda maksudkan - fakta bahwa penghentian eksekusi sengaja dan didokumentasikan ( pengembang. mozilla.org/en-US/docs/Web/JavaScript/Reference/… ), dan ini konsisten dengan bagaimana pengecualian dilemparkan / ditangkap dalam bahasa pemrograman lain. (Jika Anda ingin mencatat konten variabel tanpa menghentikan eksekusi, itulah console.log()
console.log
- jadi orang memberikan alternatif. Tentang throw()
menghentikan eksekusi, tentu saja itu disengaja, tidak ada yang mengatakan tidak. Itu sebabnya biasanya bukan cara yang baik untuk mencatat informasi debug dalam runtime, yang diinginkan OP ...
Seperti biasa, Internet Explorer adalah gajah besar dalam sepatu roda yang menghentikan Anda hanya menggunakan console.log()
.
Log jQuery dapat diadaptasi dengan mudah, tetapi sulit untuk menambahkannya di mana-mana. Salah satu solusi jika Anda menggunakan jQuery adalah dengan memasukkannya ke file jQuery Anda di akhir, diperkecil terlebih dahulu:
function log()
{
if (arguments.length > 0)
{
// Join for graceful degregation
var args = (arguments.length > 1) ? Array.prototype.join.call(arguments, " ") : arguments[0];
// This is the standard; Firebug and newer WebKit browsers support this.
try {
console.log(args);
return true;
} catch(e) {
// Newer Opera browsers support posting erros to their consoles.
try {
opera.postError(args);
return true;
}
catch(e)
{
}
}
// Catch all; a good old alert box.
alert(args);
return false;
}
}
Kunjungi https://developer.chrome.com/devtools/docs/console-api untuk referensi api konsol lengkap
console.error(object[Obj,....])\
Dalam hal ini, objek akan menjadi string kesalahan Anda
function foo() {
function bar() {
console.trace("Tracing is Done here");
}
bar();
}
foo();
console.log(console); //to print console object
console.clear('console.clear'); //to clear console
console.log('console.log'); //to print log message
console.info('console.info'); //to print log message
console.debug('console.debug'); //to debug message
console.warn('console.warn'); //to print Warning
console.error('console.error'); //to print Error
console.table(["car", "fruits", "color"]);//to print data in table structure
console.assert('console.assert'); //to print Error
console.dir({"name":"test"});//to print object
console.dirxml({"name":"test"});//to print object as xml formate
To Print Error:- console.error('x=%d', x);
console.log("This is the outer level");
console.group();
console.log("Level 2");
console.group();
console.log("Level 3");
console.warn("More of level 3");
console.groupEnd();
console.log("Back to level 2");
console.groupEnd();
console.log("Back to the outer level");
Cara paling sederhana untuk melakukan ini adalah:
console.warn("Text to print on console");
Untuk menjawab pertanyaan Anda, Anda dapat menggunakan fitur ES6,
var var=10;
console.log(`var=${var}`);
Ini tidak mencetak ke Konsol, tetapi akan membuka Anda Popup peringatan dengan pesan Anda yang mungkin berguna untuk beberapa debugging:
kerjakan saja:
alert("message");