Hata konsoluna, tercihen değişken içeren bir mesajı nasıl yazdırabilirim?
Örneğin, şöyle bir şey:
print('x=%d', x);
Hata konsoluna, tercihen değişken içeren bir mesajı nasıl yazdırabilirim?
Örneğin, şöyle bir şey:
print('x=%d', x);
Yanıtlar:
Yükleme Firebug ve sonra kullanabilir console.log(...)
ve console.debug(...)
vb (bkz belgelere bakın).
console.log()
belirtmek gerekir , bu yüzden vb. IE dahil tüm tarayıcılarda çalışmalıdır. Ancak, her durumda, hata ayıklayıcı penceresinin o anda açık olması gerekir, aksi takdirde çağrılar console
hata üretecektir.
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
Günlük iletilerinize CSS de ekleyebilirsiniz:
console.log('%c My message here', "background: blue; color: white; padding-left:10px;");
console.log
konsol içinde css kullanabilirsiniz: |
İstisnalar JavaScript konsoluna kaydedilir. Firebug'ı devre dışı bırakmak istiyorsanız bunu kullanabilirsiniz .
function log(msg) {
setTimeout(function() {
throw new Error(msg);
}, 0);
}
Kullanımı:
log('Hello World');
log('another message');
throw
bir sargıya sarılması gerektiğini açıklar setTimeout
mısınız?
Çapraz tarayıcı çalışan bunu yapmanın iyi bir yolu, JavaScript Hata Ayıklama: Uyarılarınızı atın! .
throw()
kesinlikle bunu yapmanın yolu değil. er ya da geç başın belada olacak. benim için daha erken oldu :(
Burada, hata ayıklayıcı konsoluna değil, tarayıcının hata konsoluna bir mesajın nasıl yazdırılacağıyla ilgili asıl soruya bir çözüm bulunmaktadır. (Hata ayıklayıcıyı atlamak için iyi nedenler olabilir.)
Hata konsolunda bir mesaj almak için bir hata atma önerisiyle ilgili yorumlarda belirttiğim gibi, bir sorun bunun yürütme iş parçacığını keseceğidir. İş parçacığını kesmek istemiyorsanız, hatayı setTimeout kullanılarak oluşturulan ayrı bir iş parçacığına atabilirsiniz. Bu yüzden benim çözümüm (bu Ivo Danihelka'nın çözümünün ortaya çıktığı ortaya çıkıyor):
var startTime = (new Date()).getTime();
function logError(msg)
{
var milliseconds = (new Date()).getTime() - startTime;
window.setTimeout(function () {
throw( new Error(milliseconds + ': ' + msg, "") );
});
}
logError('testing');
Başlangıç zamanından bu yana geçen milisaniye cinsinden zamanı ekliyorum çünkü zaman aşımı mesajları görmeyi beklediğiniz sırayı bozabilir.
Error yönteminin ikinci argümanı, işe yaramaz dosya adı ve satır numarasının çıktısını önlemek için burada boş bir dize olan dosya adı içindir. Arayan işlevini almak mümkündür, ancak basit bir tarayıcıdan bağımsız bir şekilde değil.
Mesajı hata simgesi yerine bir uyarı veya mesaj simgesiyle görüntüleyebilmemiz güzel olurdu, ancak bunu yapmanın bir yolunu bulamıyorum.
Fırlatma kullanmanın bir başka problemi, kapalı bir deneme yakalamasıyla yakalanıp atılabilmesidir ve fırlatmayı ayrı bir iş parçacığına koymak da bu engeli önler. Ancak, hatanın yakalanmasının başka bir yolu daha vardır, bu da window.onerror işleyicisinin yerine farklı bir şey yapan biriyle değiştirilir. Orada sana yardım edemem.
Soruyu gerçekten cevaplamak için:
console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);
Hata yerine, bilgi, günlük veya uyarıyı da kullanabilirsiniz.
console.error(..)
standart dışı bir özelliktir ve üretimde kullanılmamalıdır. Bu konudaki görüşünüz nedir? console.error
Vs kullanarak bir acemi programcı için herhangi bir öneriniz var console.log
mı?
console.log(...)
yanı "standart dışı". Bu bağlamda, console.error
kadar kararlı console.log
.
Firebug kullanıyorsanız ve IE, Safari veya Opera'yı da desteklemeniz gerekiyorsa, Firebug Lite bu tarayıcılara console.log () desteği ekler.
WebKit Web Müfettiş ayrıca destekler Firebug'ın konsol API (sadece küçük bir ekleme Dan cevap ).
Yukarıda belirtilen 'atış ()' ile ilgili bir not. Görünüşe göre sayfanın yürütülmesini tamamen durduruyor (IE8'de kontrol ettim), bu yüzden "devam eden işlemlere" giriş yapmak için çok yararlı değil (belirli bir değişkeni izlemek gibi ...)
Benim önerim, belgenizde bir yere bir textarea öğesi eklemek ve gerektiğinde bilgileri günlüğe kaydetmek için değerini ( veya metnini değiştirir ) değiştirmek (veya eklemek) ...
console.log()
, throw()
vb Ayrıca, davranışı ile yanlış bir şey yoktur throw()
sen ima görünüyor gibi - bu çalışmasının bittiği gerçeği kasıtlı ve belgelenmiş (bir geliştirici. mozilla.org/en-US/docs/Web/JavaScript/Reference/… ) ve diğer programlama dillerinde istisnaların nasıl atıldığı / yakalandığı ile tutarlıdır. (Bir değişkenin içeriğini yürütmeyi durdurmadan günlüğe kaydetmek istiyorsanız, bunun console.log()
için budur.)
console.log
vardı - bu yüzden insanlar alternatifler veriyordu. Yürütmeyi throw()
durdurma hakkında, elbette kasıtlı, kimse söylemedi. Bu nedenle , OP'nin istediği şeyde hata ayıklama bilgilerini günlüğe kaydetmek genellikle iyi bir yol değildir ...
Her zaman olduğu gibi, Internet Explorer, patenlerde sadece kullanmayı bırakan büyük fil console.log()
.
jQuery'nin günlüğü kolayca uyarlanabilir, ancak her yere eklemek zorunda olan bir acıdır. JQuery kullanıyorsanız bir çözüm, bunu önce küçültülmüş olarak sonunda jQuery dosyanıza koymaktır:
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;
}
}
Tam konsol api referansı için https://developer.chrome.com/devtools/docs/console-api adresini ziyaret edin
console.error(object[Obj,....])\
Bu durumda, nesne hata dizeniz olacaktır
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");
Bunu yapmanın en basit yolu:
console.warn("Text to print on console");
Sorunuzu cevaplamak için ES6 özelliklerini kullanabilirsiniz,
var var=10;
console.log(`var=${var}`);
Bu, Konsol'a yazdırılmaz, ancak mesajınızla birlikte bazı hata ayıklama için yararlı olabilecek bir uyarı Pop-up'ı açar:
sadece yap:
alert("message");