जावास्क्रिप्ट: मैं त्रुटि कंसोल के लिए एक संदेश कैसे प्रिंट करूं?


438

मैं त्रुटि कंसोल के लिए एक संदेश कैसे मुद्रित कर सकता हूं, अधिमानतः एक चर सहित?

उदाहरण के लिए, कुछ इस तरह:

print('x=%d', x);

8
आप किस कंसोल की बात कर रहे हैं। ब्राउज़र कंसोल या जावास्क्रिप्ट फ्रेमवर्क विशिष्ट कंसोल?
एरिक शूनओवर

जवाबों:


469

फायरबग स्थापित करें और फिर आप उपयोग कर सकते हैं console.log(...)और console.debug(...), आदि ( अधिक के लिए प्रलेखन देखें )।


14
@ दान: WebKit वेब इंस्पेक्टर भी FireBug कंसोल API का समर्थन करता है
olliej

160
यह स्वीकृत उत्तर क्यों है? उसने फायरबग कंसोल पर लिखने का तरीका नहीं पूछा, उसने पूछा कि त्रुटि कंसोल पर कैसे लिखना है। डिक या कुछ भी नहीं, बस इसे इंगित करना।
मैट लोहकैंप

127
+1। और इस प्रश्न पर पहुंचने वाले किसी भी व्यक्ति के लाभ के लिए, यह इंगित करने योग्य है कि चूंकि प्रश्न का उत्तर दिया गया था, सभी ब्राउज़रों ने अब कंसोल ऑब्जेक्ट को लागू किया है, इसलिए console.log()आईई सहित सभी ब्राउज़रों में काम करना चाहिए। हालाँकि, सभी मामलों में, आपको उस समय डिबगर विंडो को खोलना consoleहोगा , अन्यथा कॉल त्रुटियों को उत्पन्न करेगा।
14

2
@andrewjackson जैसा कि पहले उल्लेख किया गया है, IE सहित सभी आधुनिक ब्राउज़रों में कंसोल.लॉग ठीक काम करता है। यदि आप पुराने ब्राउज़रों का समर्थन करने का इरादा रखते हैं (और यदि आप किसी सार्वजनिक वेबसाइट पर काम कर रहे हैं, तो आपको यह सुनिश्चित करना चाहिए!) आपका कोड अभी भी पूरी तरह से वैध और उपयोगी है, हालाँकि मेरी आलोचना केवल यह है कि आपकी टिप्पणी भ्रामक है / सटीक नहीं है।
BrainSlugs83

1
कंसोल। रिबग () दूसरी ओर IE में मौजूद नहीं है। हम इसके साथ काम कर सकते हैं: अगर (?? कंसोल। वेब) {कंसोल.डबग = फ़ंक्शन (आर्ग्स) {कंसोल.लॉग (आर्ग्स); }}
रोवनियन

318
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

आप अपने लॉगिंग संदेशों में CSS भी जोड़ सकते हैं:

console.log('%c My message here', "background: blue; color: white; padding-left:10px;");

8
क्रोम के लिए दस्तावेज़ीकरण: Developers.google.com/chrome-developer-tools/docs/console
mrzmyr

10
यह सही जवाब है। शब्द "त्रुटि" चयनित उत्तर में भी उल्लेखित नहीं है, हालांकि यह प्रश्न शीर्षक में है।
इवान डर्स्ट

3
सीएसएस जोड़ने के बारे में अतिरिक्त बिट बहुत मजेदार है। +1!
को स्थापित करें

@ORMapper वहां क्या काम नहीं करेगा? सीएसएस मुझे लगता है?
निकोलस

2
जिस क्षण आप यह जान लेते हैं कि, console.logआपके उपयोग के ये सभी वर्ष कंसोल के अंदर css का उपयोग करने में सक्षम हैं: |
लाल

86

अपवादों को जावास्क्रिप्ट कंसोल में लॉग किया जाता है। यदि आप फायरबग को निष्क्रिय रखना चाहते हैं, तो आप इसका उपयोग कर सकते हैं ।

function log(msg) {
    setTimeout(function() {
        throw new Error(msg);
    }, 0);
}

उपयोग:

log('Hello World');
log('another message');

8
कुछ ब्राउज़रों में, यदि आपने डिबगिंग सक्षम किया है, तो यह पॉप-अप संदेशों को फेंक देगा।
BrainSlugs83

क्या आप कृपया बता सकते हैं कि एक में क्यों throwलपेटा जाना चाहिए setTimeout?
एंटनी

55

क्रॉस-ब्राउज़र पर काम करने वाला एक अच्छा तरीका यह है कि डीबगिंग जावास्क्रिप्ट में उल्लिखित किया जाए : अपने अलर्ट को फेंक दें!


7
फेंक () एक महान सुझाव है - यह चुना हुआ उत्तर होना चाहिए।
मैट लोहकैंप

17
सहमत, यह एक क्रॉस-ब्राउज़र दृष्टिकोण है। लेकिन .. लॉगिंग संदेशों से मौलिक रूप से एक अपवाद को फेंकना नहीं है?
रॉबिन माबेन

14
दूसरी ओर, एक अपवाद को फेंकने से वर्तमान "थ्रेड" (यूल ए द्वारा नोट किया गया) का निष्पादन बंद हो जाएगा, और अगर कोई एक है तो उसे फिर से शुरू करें। मुझे संदेह है कि यह क्या है।
dlaliberte

7
throw()निश्चित रूप से ऐसा करने का तरीका नहीं है। आप जल्दी या बाद में परेशानी में पड़ेंगे। मेरे लिए यह जल्दी था :(
ह्यूगो मोटा

4
@Ian_Oxley: यह कुछ बिंदु पर नीचे था, अब यह वापस आ गया है, लेकिन कोड को यहां पोस्ट करना अभी भी बेहतर है, और स्टैकओवरफ्लो सर्वोत्तम प्रथाओं द्वारा अनुशंसित है।
वोहू

15

यहां ब्राउज़र के एरर कंसोल में किसी मैसेज को कैसे प्रिंट किया जाए, इस पर डिबगर कंसोल को नहीं, शाब्दिक सवाल का हल है। (डिबगर को बायपास करने के अच्छे कारण हो सकते हैं।)

जैसा कि मैंने त्रुटि कंसोल में एक संदेश प्राप्त करने के लिए एक त्रुटि को फेंकने के सुझाव के बारे में टिप्पणियों में उल्लेख किया है, एक समस्या यह है कि यह निष्पादन के धागे को बाधित करेगा। यदि आप थ्रेड को बाधित नहीं करना चाहते हैं, तो आप सेट थ्रेडआउट का उपयोग करके त्रुटि को एक अलग थ्रेड में फेंक सकते हैं। इसलिए मेरा समाधान (जो इवो डेनियलका द्वारा एक के विस्तार के लिए निकला):

var startTime = (new Date()).getTime();
function logError(msg)
{
  var milliseconds = (new Date()).getTime() - startTime;
  window.setTimeout(function () {
    throw( new Error(milliseconds + ': ' + msg, "") );
  });
}
logError('testing');

मैं शुरुआती समय से मिलीसेकंड में समय शामिल करता हूं क्योंकि टाइमआउट उस आदेश को तिरछा कर सकता है जिसमें आप संदेशों को देखने की उम्मीद कर सकते हैं।

त्रुटि विधि का दूसरा तर्क फ़ाइलनाम के लिए है, जो बेकार फ़ाइल नाम और लाइन नंबर के आउटपुट को रोकने के लिए यहां एक रिक्त स्ट्रिंग है। कॉलर फ़ंक्शन को प्राप्त करना संभव है, लेकिन स्वतंत्र ब्राउज़र में स्वतंत्र तरीके से नहीं।

यह अच्छा होगा यदि हम त्रुटि आइकन के बजाय एक चेतावनी या संदेश आइकन के साथ संदेश प्रदर्शित कर सकते हैं, लेकिन मुझे ऐसा करने का कोई तरीका नहीं मिल सकता है।

थ्रो का उपयोग करने के साथ एक और समस्या यह है कि इसे पकड़ा जा सकता है और एक संलग्न प्रयास द्वारा पकड़ा जा सकता है, और थ्रो को एक अलग थ्रेड में डालने से उस बाधा से भी बचा जाता है। हालांकि, अभी तक एक और तरीका है कि त्रुटि को पकड़ा जा सकता है, जो कि है अगर window.onerror हैंडलर को एक के साथ बदल दिया जाता है जो कुछ अलग करता है। वहाँ तुम्हारी मदद नहीं कर सकता।


15

यदि आप सफारी का उपयोग करते हैं , तो आप लिख सकते हैं

console.log("your message here");

और यह ब्राउज़र के कंसोल पर सही दिखाई देता है।


11
सभी आधुनिक ब्राउज़र समर्थन करते हैं console.log()
जेजे

2
सभी आधुनिक ब्राउज़र अब समर्थन करते हैं console.log()। यह हाल तक सच नहीं था।
ब्रज

9

वास्तव में सवाल का जवाब देने के लिए:

console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);

त्रुटि के बजाय, आप जानकारी, लॉग या चेतावनी का उपयोग भी कर सकते हैं।


आपका उत्तर सबसे अच्छा लगता है, लेकिन मोज़िला का एमडीएन पृष्ठ कहता console.error(..)है कि यह एक गैर-मानक विशेषता है और इसका उपयोग उत्पादन में नहीं किया जाना चाहिए। इसमें आपको क्या फायदा होगा? क्या आपके पास console.errorबनाम का उपयोग करके नौसिखिया प्रोग्रामर के लिए कोई सुझाव है console.log?
modulitos

यह दिलचस्प है। हमें इसका उपयोग नहीं करना चाहिए। जानकारी के लिए धन्यवाद, लुकास।
यस्टर

2
एमडीएन को console.log(...)"गैर-मानक" भी माना जाता है। उस संबंध में, console.errorके रूप में के रूप में स्थिर है console.log
माइक रैपादास

1
@ लुकास अगर मानक है तो कौन परवाह करता है? उत्पादन के लिए कंसोल लॉगिंग का उपयोग कौन करने जा रहा है?
एंड्रयू

Console.error अब सभी प्रमुख ब्राउज़रों में काम करता है। यहां तक ​​कि IE8। देखें developer.mozilla.org/en-US/docs/Web/API/Console/error
लाल

8

यदि आप फायरबग का उपयोग कर रहे हैं और आईई, सफारी या ओपेरा का समर्थन करने की आवश्यकता है, तो फायरबग लाइट इन ब्राउज़रों के लिए कंसोल.लॉग () समर्थन जोड़ता है।


2
वाह .. फायरबग लाइट कमाल है
Dexter

6

वेबकिट वेब निरीक्षक भी समर्थन करता है Firebug के कंसोल एपीआई (बस के लिए एक छोटी सी अलावा दान के जवाब )।


बहुत अच्छा WebKit इसका समर्थन करता है। तो यह काफी व्यापक रूप से समर्थित है। महान!
एल्बस डंबलडोर

5

ऊपर उल्लिखित 'फेंक ()' के बारे में एक नोट। ऐसा लगता है कि यह पृष्ठ के निष्पादन को पूरी तरह से बंद कर देता है (मैंने IE8 में जांच की), इसलिए "लॉगिंग प्रक्रियाओं पर" लॉगिंग करने के लिए यह बहुत उपयोगी नहीं है (जैसे एक निश्चित चर को ट्रैक करना ...)

मेरा सुझाव शायद आपके दस्तावेज़ में कहीं एक textarea तत्व जोड़ना है और जब भी आवश्यकता हो, जानकारी लॉग करने के लिए इसका मूल्य (जो इसके पाठ को बदल देगा) को बदलना (या जोड़ना) ।


मैं यह अनुमान लगा रहा हूं क्योंकि आपने ओपी के सवाल का जवाब नहीं दिया। JS कंसोल पर प्रिंट करने के लिए, आपको एक बिल्ट-इन मेथड जैसे कि console.log(), throw()आदि का उपयोग करना होगा । इसके अलावा, जैसा throw()कि आप को लगता है कि यह व्यवहार के साथ कुछ भी गलत नहीं है - तथ्य यह है कि यह निष्पादन को रोकता है जानबूझकर और दस्तावेज ( डेवलपर)। mozilla.org/en-US/docs/Web/JavaScript/Reference/… ), और यह अपवाद है कि कैसे अन्य प्रोग्रामिंग भाषाओं में अपवादों को फेंका / पकड़ा जाता है। (यदि आप निष्पादन को रोकने के बिना एक चर की सामग्री को लॉग इन करना चाहते हैं, तो console.log()इसके लिए क्या है।)
शॉन बीन

@ सीनियन, मूल रूप से इस तथ्य के बारे में चर्चा थी कि IE ने समर्थन नहीं किया है console.log- इसलिए लोग विकल्प दे रहे थे। के बारे में throw()निष्पादन रोक, के पाठ्यक्रम यह जानबूझकर है, कोई भी कहा कि यह नहीं है। यही कारण है कि यह आम तौर पर है की नहीं एक अच्छा तरीका क्रम है, जो ओ पी चाहता था में डिबग जानकारी लॉग इन करने के ...
युवाल ए

5

हमेशा की तरह, इंटरनेट एक्सप्लोरर रोलर्सकेट्स में बड़ा हाथी है जो आपको बस उपयोग करने से रोकता है console.log()

jQuery के लॉग को काफी आसानी से अनुकूलित किया जा सकता है, लेकिन हर जगह इसे जोड़ने के लिए एक दर्द है। एक उपाय यदि आप jQuery का उपयोग कर रहे हैं, तो इसे अंत में अपनी jQuery फ़ाइल में डालना है, पहले minified:

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

अब इसे jQuery के एक्सटेंशन के रूप में स्वीकार कर लिया गया है, लेकिन क्या यह '' कंसोल 'और' ओपेरा 'ऑब्जेक्ट अपवाद को पकड़ने से पहले मौजूद है या नहीं, यह जांचने के लिए एफिशिएंट नहीं होगा?
डेन्यूबियन नाविक

@lechlukasz मुझे लगता है कि आप एक्सटेंशन के ओवरहेड को बचा सकते हैं और बस कंसोल का उपयोग कर सकते हैं। प्लस इस IE चेक: stackoverflow.com/questions/1215392/…
क्रिस एस


3

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


1
console.log("your message here");

मेरे लिए काम कर रहा हूँ .. मैं इस के लिए खोज रहा हूँ .. मैं फ़ायरफ़ॉक्स का इस्तेमाल किया। यहाँ मेरी स्क्रिप्ट है।

 $('document').ready(function() {
console.log('all images are loaded');
});

फ़ायरफ़ॉक्स और क्रोम में काम करता है।




0

यह कंसोल पर प्रिंट नहीं होता है, लेकिन आपको आपके संदेश के साथ एक अलर्ट पॉपअप खोलेगा जो कुछ डीबगिंग के लिए उपयोगी हो सकता है:

बस करो:

alert("message");

ओपी ने जो पूछा, वह कुछ भी नहीं है
ज़ेफ़र ज़द्रवकोव

0

Es6 सिंटैक्स के साथ आप उपयोग कर सकते हैं:

console.log(`x = ${x}`);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.