জাভাস্ক্রিপ্ট: আমি কীভাবে ত্রুটি কনসোলে একটি বার্তা প্রিন্ট করব?


438

আমি ত্রুটি কনসোলে কীভাবে কোনও বার্তা প্রিন্ট করতে পারি?

উদাহরণস্বরূপ, এর মতো কিছু:

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

8
আপনি কোন কনসোলের কথা বলছেন? ব্রাউজার কনসোল বা জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক নির্দিষ্ট কনসোল?
এরিক শুনোভার 20

উত্তর:


469

ফায়ারব্যাগ ইনস্টল করুন এবং তারপরে আপনি console.log(...)এবং console.debug(...)ইত্যাদি ব্যবহার করতে পারেন (আরও ডকুমেন্টেশন দেখুন)।


14
@ ড্যান: ওয়েবকিট ওয়েব পরিদর্শক
ফায়ারব্যাগ

160
কেন এটি গৃহীত উত্তর? তিনি ফায়ারব্যাগ কনসোলে কীভাবে লিখবেন তা জিজ্ঞাসা করেননি, ত্রুটি কনসোলে কীভাবে লিখবেন সে জিজ্ঞাসা করেছিলেন। ডিক বা কিছুই হ'ল না, কেবল এটি দেখানো।
ম্যাট লোহক্যাম্প

127
+1 টি। এবং এই প্রশ্নটিতে এখন যে কেউ আসার সুবিধার জন্য, এটি উল্লেখ করা দরকার যে যেহেতু প্রশ্নের উত্তর দেওয়া হয়েছিল, সমস্ত ব্রাউজারগুলি এখন কনসোল অবজেক্টটি বাস্তবায়ন করেছে, তাই console.log()ইত্যাদি সহ সমস্ত ব্রাউজারগুলিতে কাজ করা উচিত। যাইহোক, সমস্ত ক্ষেত্রে, আপনার সময়টি ডিবাগার উইন্ডো খোলা থাকা দরকার, অন্যথায় কলগুলি consoleত্রুটি উত্পন্ন করবে।
স্পুডলি

2
@ অ্যান্ড্রুজ্যাকসন পূর্বে উল্লিখিত হিসাবে, কনসোল.লগ আইই সহ সমস্ত আধুনিক ব্রাউজারে দুর্দান্ত কাজ করে। আপনার কোডটি এখনও পুরোপুরি বৈধ এবং কার্যকর যদি আপনি পুরানো ব্রাউজারগুলিকে সমর্থন করতে চান (এবং আপনি যদি কোনও পাবলিক ওয়েবসাইটে কাজ করছেন তবে আপনি নিশ্চিত হকের মতো হওয়া উচিত!) তবে আমার সমালোচনা কেবলমাত্র আপনার মন্তব্যটি বিভ্রান্তিকর / সঠিক নয়।
BrainSlugs83

1
অন্যদিকে কনসোল.দেবগ () আইই তে বিদ্যমান নেই। আমরা এর সাথে এটির সাথে কাজ করতে পারি: if (! Console.debug) so console.debug = ফাংশন (আরগস) {কনসোল.লগ (আরগস); }}
রোভানিয়ন

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

আপনি আপনার লগিং বার্তাগুলিতে সিএসএস যুক্ত করতে পারেন:

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 টি!
sudo

@ ওআরম্যাপার সেখানে কি কাজ করে না? সিএসএস আমি ধরে নিই?
নিকোলাস

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
ਸੁੱਟ () একটি দুর্দান্ত পরামর্শ - এটি চয়ন করা উত্তর হওয়া উচিত be
ম্যাট লোহক্যাম্প

17
সম্মত, এটি একটি ক্রস-ব্রাউজার পদ্ধতির। তবে .. কোনও ব্যতিক্রম নিক্ষেপ করা বার্তা লগইন থেকে মূলত পৃথক নয়?
রবিন মাবেন

14
অন্যদিকে, একটি ব্যতিক্রম ছুঁড়ে ফেলা বর্তমান "থ্রেড" (যুওয়াল এ দ্বারা উল্লিখিত) এর কার্যকারিতা থামিয়ে দেবে, এবং যদি সেখানে থাকে তবে এটি পুনরায় শুরু করুন। আমি সন্দেহ করি এটিই যা কাঙ্ক্ষিত।
dlaliberte

7
throw()অবশ্যই এটি করার উপায় নয়। আপনি তাড়াতাড়ি বা পরে সমস্যায় পড়বেন। আমার জন্য এটি খুব তাড়াতাড়ি ছিল :(
হুগো মোটা

4
@ ইয়ান_অক্সলে: এটি কিছুটা সময় নেমে এসেছিল, এখন এটি ব্যাক আপ হয়েছে, তবে কোডটি এখানে পোস্ট করা এখনও আরও ভাল এবং স্ট্যাকওভারফ্লো সেরা পদ্ধতির দ্বারা প্রস্তাবিত।
ওহাহু

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

আমি শুরুর সময় থেকে সময়টিকে মিলিসেকেন্ডে অন্তর্ভুক্ত করি কারণ সময়সীমাটি বার্তাটি দেখার জন্য আপনি যে ক্রমটি প্রত্যাশা করতে পারেন তা ক্রম করতে পারে।

ত্রুটি পদ্ধতির দ্বিতীয় যুক্তি হ'ল ফাইলনামের জন্য যা এখানে অকেজো ফাইল নাম এবং লাইন নম্বর আউটপুট রোধ করতে খালি স্ট্রিং। কলার ফাংশন পাওয়া সম্ভব তবে সাধারণ ব্রাউজারে স্বতন্ত্র উপায়ে নয়।

যদি আমরা ত্রুটি আইকনটির পরিবর্তে কোনও সতর্কতা বা বার্তা আইকন সহ বার্তাটি প্রদর্শন করতে পারি তবে এটি দুর্দান্ত হবে তবে আমি এটি করার উপায় খুঁজে পাই না।

নিক্ষেপ ব্যবহারের সাথে আর একটি সমস্যা হ'ল এটি কোনও সংক্রামক চেষ্টা-দ্বারা ধরা পড়ে ফেলে দেওয়া যেতে পারে, এবং একটি পৃথক থ্রেডে থ্রো রাখাও সেই বাধা এড়ায়। তবে ত্রুটিটি ধরা পড়ার আরও একটি উপায় রয়েছে, এটি হ'ল যদি উইন্ডো.অনরআরর হ্যান্ডলারের পরিবর্তে কিছু আলাদা হয় does আপনাকে সেখানে সাহায্য করতে পারে না।


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

ত্রুটির পরিবর্তে, আপনি তথ্য, লগ বা সতর্কতাও ব্যবহার করতে পারেন।


আপনার উত্তর শ্রেষ্ঠ মনে হলেও মোজিলার MDN পৃষ্ঠা বলছেন console.error(..)কোনো অ-মানক বৈশিষ্ট্য এবং উৎপাদনে ব্যবহার করা উচিত নয়। আপনার এই গ্রহণ কি? console.errorবনাম ব্যবহার করে আপনার কোনও শিক্ষানবিস প্রোগ্রামারের জন্য কোনও পরামর্শ আছে console.log?
Modulitos

এটা মজার. আমাদের তখন এটি ব্যবহার করা উচিত নয়। তথ্যের জন্য ধন্যবাদ, লুকাস।
ইয়াস্টার

2
MDN deems console.log(...)"অ-মান" হিসাবে ভাল। যে ক্ষেত্রে, console.errorহিসাবে হিসাবে স্থিতিশীল console.log
মাইক রাপাদাস 14

1
@ লুকাস এটি মানসম্মত কিনা কে চিন্তা করে? কে উত্পাদনের জন্য কনসোল লগিং ব্যবহার করবে?
অ্যান্ড্রু

কনসোল.অররার এখন সমস্ত বড় ব্রাউজারে কাজ করে। এমনকি আই 8। বিকাশকারী.মোজিলা.অর্গ.ইন-
লাল

8

আপনি যদি ফায়ারব্যাগ ব্যবহার করছেন এবং পাশাপাশি আইই, সাফারি বা অপেরা সমর্থন করতে চান তবে ফায়ারব্যাগ লাইট এই ব্রাউজারগুলিতে কনসোল.লগ () সমর্থন যুক্ত করে।


2
বাহ .. ফায়ারব্যাগ লাইট দুর্দান্ত
ডেক্সটার

6

ওয়েবকিট ওয়েব ইন্সপেক্টর এছাড়াও সমর্থন ফায়ারবাগকে এর কনসোল এপিআই (ঠিক করার জন্য একটি ছোটখাট উপরন্তু ড্যান এর উত্তর )।


খুব সুন্দর ওয়েবকিট এটি সমর্থন করে। সুতরাং এটি বেশ ব্যাপকভাবে সমর্থিত। গ্রেট!
অ্যালবাস ডাম্বলডোর

5

উপরে উল্লিখিত 'নিক্ষেপ ()' সম্পর্কে একটি নোট। দেখে মনে হচ্ছে এটি পৃষ্ঠার সম্পূর্ণ সম্পাদন বন্ধ করে দেয় (আমি আইই 8 তে চেক করেছি), সুতরাং এটি "চলমান প্রক্রিয়াগুলি" লগিংয়ের জন্য খুব কার্যকর নয় (কোনও নির্দিষ্ট ভেরিয়েবল ট্র্যাক করতে চাই ...)

আমার পরামর্শ সম্ভবত আপনার নথির কোথাও একটি পাঠ্য উপাদান যুক্ত করা এবং যখনই প্রয়োজন তথ্য লগ করার জন্য এর মান (যা এটির পাঠ্য পরিবর্তন করবে) পরিবর্তন করা ...


আমি অনুমান করছি এটি কারণ আপনি অপের প্রশ্নের উত্তর দেননি। জাতীয় কনসোলে মুদ্রণ করতে, আপনার মত একটি বিল্ট-ইন পদ্ধতি ব্যবহার করা আবশ্যক console.log(), throw()ইত্যাদি ছাড়াও, সেখানে আচরণ সঙ্গে কোন কিছুই ভুল না throw()হিসাবে আপনি পরোক্ষভাবে বলে মনে হচ্ছে - আসলে এটা সঞ্চালনের স্টপ যে ইচ্ছাকৃত এবং নথিভুক্ত (হয় ডেভেলপার। mozilla.org/en-US/docs/Web/JavaScript/References/… ), এবং এটি কীভাবে অন্যান্য প্রোগ্রামিং ভাষায় ব্যতিক্রম ছুঁড়ে / ধরা হয় তার সাথে সামঞ্জস্য। (যদি আপনি কার্যকরকরণ বন্ধ না করে কোনও ভেরিয়েবলের বিষয়বস্তু লগইন করতে চান তবে console.log()এটিই এর জন্য
সান দ্য বিয়ান

@ সান্থিবিয়ান, মূলত আইই সমর্থন করে না এই বিষয়টি নিয়ে আলোচনা হয়েছিল console.log- তাই লোকেরা বিকল্পধারা দিচ্ছিল। আমাদের সম্পর্কে throw()সঞ্চালনের বাঁধন, অফ কোর্স এটা ইচ্ছাকৃত আছে, কেউ বলেনি যে এটা নয়। এ কারণেই রানটাইমে ডিবাগ তথ্য লগ করার জন্য এটি সাধারণত ভাল উপায় নয় যা ওপি যা চেয়েছিল ...
যুবাল এ।

5

বরাবরের মতো, ইন্টারনেট এক্সপ্লোরার হ'ল রোলারকেটগুলির মধ্যে একটি বড় হাতি যা আপনাকে কেবল সহজেই ব্যবহার বন্ধ করে দেয় console.log()

jQuery এর লগটি বেশ সহজেই মানিয়ে নেওয়া যায় তবে এটিকে সর্বত্র যুক্ত করার ব্যথা। আপনি jQuery ব্যবহার করছেন তবে একটি সমাধান হ'ল প্রথমে এটি আপনার jQuery ফাইলে রেখে দেওয়া হবে, প্রথমে মিনিকেড করা:

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 এর এক্সটেনশান হিসাবে স্বীকৃত, কিন্তু ব্যতিক্রম ধরা আগে 'কনসোল' এবং 'অপেরা' অবজেক্ট উপস্থিত আছে কিনা তা পরীক্ষা করা কার্যকর হবে না?
ডানুবিয়ান নাবিক

@ লেচলুকাসজ আমি মনে করি আপনি এক্সটেনশনের ওভারহেড সংরক্ষণ করতে পারেন এবং কেবল কনসোল.লগ ব্যবহার করতে পারেন এই আইই চেক: স্ট্যাকওভারফ্লো
ক্রিস এস


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

এস -6 সিনট্যাক্সের সাহায্যে আপনি ব্যবহার করতে পারেন:

console.log(`x = ${x}`);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.