दिलचस्प पोस्ट
फ़ाइल बनाने के लिए एजेक्स के माध्यम से ब्लाको पास करें रूबी में @@ चर का क्या अर्थ है? किसी तत्व का चयन करें जब क्लास का नाम एक निश्चित शब्द से शुरू होता है यह संसाधन आईडी # 2 वापस क्यों करता है? SSL प्रॉक्सी / चार्ल्स और एंड्रॉइड समस्या पायथन में जावास्क्रिप्ट पार्सर जानने के लिए आरडीएफ़ शब्दावली का उपयोग करने के लिए जीआईटी रीसेट करने के बाद जोड़ा फ़ाइल पुनर्प्राप्त – हार्ड हेड ^ आर में क्यों लूप धीमा हो? WPF UserControl डिजाइन समय आकार अलग-अलग समय पर हर दिन आग स्थानीय अधिसूचना PHP कर्ल बनाम file_get_contents JavaFX में 2 रंगों के साथ पृष्ठभूमि? एंड्रॉइड – फायरबसे – टास्क स्नैपशॉट – विधि को केवल निजी क्षेत्र में ही एक्सेस किया जाना चाहिए? एंड्रॉइड: दृश्य शैली को प्रोग्राम के अनुसार सेट करें

मेरे कंसोल में सभी कंसोल.लॉग स्टेटमेंट को जल्दी और आसानी से कैसे अक्षम करें?

परीक्षण के प्रयोजनों के लिए, मेरे जावास्क्रिप्ट कोड में सभी console.log स्टेटमेंट को बंद करने का कोई तरीका है?

Solutions Collecting From Web of "मेरे कंसोल में सभी कंसोल.लॉग स्टेटमेंट को जल्दी और आसानी से कैसे अक्षम करें?"

अपनी स्क्रिप्ट में console.log फ़ंक्शन को फिर से परिभाषित करें

 console.log = function() {} 

यही है, सांत्वना के लिए और संदेश नहीं।

संपादित करें:

सीड के विचार पर विस्तार एक कस्टम लॉगर जिसे आप अपने कोड से लॉगिंग चालू / बंद करने के लिए उपयोग कर सकते हैं।

मेरे फ़ायरफ़ॉक्स कंसोल से:

 var logger = function() { var oldConsoleLog = null; var pub = {}; pub.enableLogger = function enableLogger() { if(oldConsoleLog == null) return; window['console']['log'] = oldConsoleLog; }; pub.disableLogger = function disableLogger() { oldConsoleLog = console.log; window['console']['log'] = function() {}; }; return pub; }(); $(document).ready( function() { console.log('hello'); logger.disableLogger(); console.log('hi', 'hiya'); console.log('this wont show up in console'); logger.enableLogger(); console.log('This will show up!'); } ); 

ऊपर 'लकड़हारा' का उपयोग कैसे करें? आपके तैयार घटना में, logger.disableLogger को कॉल करें ताकि कंसोल संदेश लॉग नहीं किए जा सकें। Logger.enableLogger और logger.disableLogger को कॉल करने के लिए विधि के अंदर जोड़ें, जिसके लिए आप कंसोल में संदेशों को लॉग ऑन करना चाहते हैं।

निम्नलिखित अधिक संपूर्ण है:

 var DEBUG = false; if(!DEBUG){ if(!window.console) window.console = {}; var methods = ["log", "debug", "warn", "info"]; for(var i=0;i<methods.length;i++){ console[methods[i]] = function(){}; } } 

यह कंसोल में मौजूद सामान्य तरीकों को शून्य करेगा यदि यह मौजूद है, और उन्हें बिना त्रुटि के नाम से जोड़ा जा सकता है और वस्तुतः कोई प्रदर्शन ओवरहेड नहीं है। कोई कंसोल के बिना IE6 जैसे ब्राउज़र के मामले में, त्रुटियों को रोकने के लिए डमी विधियां बनाई जाएंगी। बेशक फायरबग में कई फ़ंक्शन हैं, जैसे ट्रेस, प्रोफाइल, समय, आदि। यदि आप उन्हें अपने कोड में उपयोग करते हैं तो उन्हें सूची में जोड़ा जा सकता है।

आप यह भी जांच सकते हैं कि डिबगर के पास उन विशेष तरीके हैं या नहीं (यानी, IE) और जिन लोगों का समर्थन नहीं करता है उन्हें बाहर कीजिए:

 if(window.console && !console.dir){ var methods = ["dir", "dirxml", "trace", "profile"]; //etc etc for(var i=0;i<methods.length;i++){ console[methods[i]] = function(){}; } } 

जहाँ तक मैं दस्तावेज़ से बता सकता हूं, फायरबग डीबग स्थिति को टॉगल करने के लिए किसी भी चर की आपूर्ति नहीं करता है। इसके बजाय, एक आवरण में console.log () को लपेटें जो सशर्त रूप से कहता है, यानी:

 DEBUG = true; // set to false to disable debugging function debug_log() { if ( DEBUG ) { console.log.apply(this, arguments); } } 

सभी मौजूदा कॉलों को बदलने की आवश्यकता नहीं है, तो आप इसका उपयोग इसके बजाय कर सकते हैं:

 DEBUG = true; // set to false to disable debugging old_console_log = console.log; console.log = function() { if ( DEBUG ) { old_console_log.apply(this, arguments); } } 

मुझे पता है कि आपको कंसोल.लाग को अक्षम करने के बारे में पूछा गया है, लेकिन यह हो सकता है कि आप वास्तव में कब हैं। इस तरह आपको कंसोल को स्पष्ट रूप से सक्षम या अक्षम करने की आवश्यकता नहीं है। यह केवल उन्हीं लोगों के लिए परेशानी वाले कंसोल त्रुटियों को रोकता है जिनके पास इसे खोलना या स्थापित नहीं है।

 if(typeof(console) === 'undefined') { var console = {}; console.log = console.error = console.info = console.debug = console.warn = console.trace = console.dir = console.dirxml = console.group = console.groupEnd = console.time = console.timeEnd = console.assert = console.profile = function() {}; } 

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन यह अभी भी Google परिणामों के शीर्ष पर चली जाती है, इसलिए यह नवीनतम क्रोम, एफएफ, और आईई में काम करने वाला एक और अधिक शानदार गैर-jQuery समाधान है।

 (function (original) { console.enableLogging = function () { console.log = original; }; console.disableLogging = function () { console.log = function () {}; }; })(console.log); 

यदि आप आईई 7 का प्रयोग कर रहे हैं, तो कंसोल को परिभाषित नहीं किया जाएगा। तो एक अधिक IE अनुकूल संस्करण होगा:

 if (typeof console == "undefined" || typeof console.log == "undefined") { var console = { log: function() {} }; } 

तुम्हे नही करना चाहिए!

अंतर्निहित कार्यों को अधिलेखित करने के लिए यह एक अच्छा अभ्यास नहीं है इसमें कोई गारंटी नहीं है कि आप सभी आउटपुट को दबाने देंगे, आपके द्वारा उपयोग किए जाने वाले अन्य लाइब्रेरी आपके परिवर्तनों को वापस ले सकते हैं और कंसोल में लिखने वाले अन्य फ़ंक्शन भी हैं; .dir() , .warning() , .error() , .debug() , .assert() आदि।

जैसा कि कुछ सुझाव दिया गया है, आप DEBUG_MODE चर परिभाषित कर सकते हैं और सशर्त रूप से लॉग इन कर सकते हैं। आपके कोड की जटिलता और प्रकृति के आधार पर, कंसोल ऑब्जेक्ट के चारों ओर लपेटते हुए अपना खुद का लॉगर ऑब्जेक्ट / फ़ंक्शन लिखना अच्छा विचार हो सकता है और इस क्षमता में अंतर्निहित है उपकरण के साथ सौदा करने के लिए यह सही स्थान होगा

उसने कहा, 'परीक्षण' उद्देश्यों के लिए आप कंसोल पर मुद्रण के बजाय परीक्षण लिख सकते हैं। यदि आप कोई परीक्षण नहीं कर रहे हैं, और उन console.log() पंक्तियां केवल आपके कोड को लिखने के लिए एक सहायता थी, बस उन्हें हटा दें

कंसोल.लाॉग फ़ंक्शन को ओवरराइड करने के लिए बस ध्वज DEBUG बदलें। यह काम कर जाना चाहिए।

 var DEBUG = false; // ENABLE/DISABLE Console Logs if(!DEBUG){ console.log = function() {} } 

मुझे आश्चर्य है कि उन सभी उत्तरों में से कोई भी मेल नहीं खाता है:

  • कोई jquery नहीं
  • वैश्विक नामस्थान प्रदूषित करने के लिए बेनामी कार्य
  • मामले को संभाल लें जहां विंडो.संसोल परिभाषित नहीं है
  • बस कंसोल के .log समारोह को संशोधित करें

मैं इसके लिए जाना था:

 (function () { var debug = false if (debug === false) { if ( typeof(window.console) === 'undefined') { window.console = {}; } window.console.log = function () {}; } })() 

इसके बाद मैंने इस मुद्दे की खोज की और मेरे कॉर्डोबा ऐप के अंदर इसे करने की कोशिश की, मैं सिर्फ हर डेवलपर को विंडोज फोन के लिए चेतावनी देना चाहता हूं

  console.log 

क्योंकि ऐप स्टार्टअप पर क्रैश हो जाएगा

अगर आप भाग्यशाली हो तो आप स्थानीय स्तर पर विकास कर रहे हैं, लेकिन यह स्टोर में जमा होने पर यह दुर्घटनाग्रस्त नहीं होगा, इसके परिणामस्वरूप ऐप को दुर्घटनाग्रस्त हो जाएगा।

बस अधिलेखित करें

  window.console.log 

अगर आप की जरूरत है।

यह मेरे ऐप में काम करता है:

  try { if (typeof(window.console) != "undefined") { window.console = {}; window.console.log = function () { }; window.console.info = function () { }; window.console.warn = function () { }; window.console.error = function () { }; } if (typeof(alert) !== "undefined") { alert = function () { } } } catch (ex) { } 

यह SolutionYogi और Chris S. से उत्तर के एक संकर यह console.log लाइन संख्या और फ़ाइल नाम रखता है। उदाहरण jsFiddle

 // Avoid global functions via a self calling anonymous one (uses jQuery) (function(MYAPP, $, undefined) { // Prevent errors in browsers without console.log if (!window.console) window.console = {}; if (!window.console.log) window.console.log = function(){}; //Private var var console_log = console.log; //Public methods MYAPP.enableLog = function enableLogger() { console.log = console_log; }; MYAPP.disableLog = function disableLogger() { console.log = function() {}; }; }(window.MYAPP = window.MYAPP || {}, jQuery)); // Example Usage: $(function() { MYAPP.disableLog(); console.log('this should not show'); MYAPP.enableLog(); console.log('This will show'); }); 

अगर आप कंटेंट का उपयोग करते हैं तो आप console.log स्टेटमेंट को हटाने / टिप्पणी करने के लिए एक कार्य जोड़ सकते हैं। इसलिए console.log को अब नहीं कहा जाता है।

https://www.npmjs.org/package/grunt-remove-logging-calls

चेतावनी: बेशर्म प्लग!

आप अपने जेएसट्रेस ऑब्जेक्ट की तरह कुछ भी उपयोग कर सकते हैं, मॉड्यूलर ट्रेसिंग के लिए मॉड्यूल-स्तरीय "स्विचिंग" क्षमता के साथ ही उस समय को चालू करें जिसे आप देखना चाहते हैं।

http://jstrace.codeplex.com

(जो कि देखभाल करने वालों के लिए एक NuGet पैकेज भी है)

सभी स्तर "त्रुटि" के लिए डिफ़ॉल्ट हैं, हालांकि आप उन्हें "बंद" बंद कर सकते हैं हालांकि, मैं नहीं सोच सकता कि आप त्रुटियों को क्यों नहीं देखना चाहते हैं

आप उन्हें इस प्रकार बदल सकते हैं:

 Trace.traceLevel('ModuleName1', Trace.Levels.log); Trace.traceLevel('ModuleName2', Trace.Levels.info); 

आगे दस्तावेज़, दस्तावेज़ीकरण की जांच करें

टी

मुझे इस यूआरएल में कोड का थोड़ा और अधिक उन्नत टुकड़ा मिला जावास्क्रिप्ट टिप: बस्ट और अक्षम करें console.log :

 var DEBUG_MODE = true; // Set this value to false for production if(typeof(console) === 'undefined') { console = {} } if(!DEBUG_MODE || typeof(console.log) === 'undefined') { // FYI: Firebug might get cranky... console.log = console.error = console.info = console.debug = console.warn = console.trace = console.dir = console.dirxml = console.group = console.groupEnd = console.time = console.timeEnd = console.assert = console.profile = function() {}; } 

Ive समस्या का सामना करने के लिए निम्नलिखित का उपयोग कर रहा है: –

 var debug = 1; var logger = function(a,b){ if ( debug == 1 ) console.log(a, b || "");}; 

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

तो, इसके बजाय

 console.log("my","log"); 

उपयोग

 logger("my","log"); 

आप जावास्क्रिप्ट एओपी (उदाहरण के लिए jquery-aop ) का इस्तेमाल कर सकते हैं ताकि सभी कॉल को कंसोल.डेबग / लॉग (आस -पास ) पर रोक दिया जा सके और यदि कुछ ग्लोबल वैरिएबल झूठे पर सेट किया गया हो तो वास्तविक अभिविन्यास के साथ आगे बढ़ें न।

आप एक एजेक्स कॉल (अब और उसके बाद) कर सकते हैं ताकि आप सर्वर पर लॉग सक्षम / अक्षम व्यवहार बदल सकें जो एक मचान वातावरण में समस्या का सामना करते समय डिबगिंग को सक्षम करने के लिए बहुत ही दिलचस्प हो सकता है या

आप लॉगईक का उपयोग कर सकते हैं, यह आपको अपने लॉग संदेश दृश्यता को नियंत्रित करने की अनुमति देता है। यहां आप ऐसा कैसे करते हैं:

 <script src="bower_components/dist/logeek.js"></script> logeek.show('security'); logeek('some message').at('copy'); //this won't be logged logeek('other message').at('secturity'); //this would be logged 

आप हर लॉग संदेश को पूरी तरह से अक्षम करने के लिए logeek.show('nothing') भी कर सकते हैं।

मैंने इस usecase के लिए एक पुस्तकालय विकसित किया: https://github.com/sunnykgupta/jsLogger

विशेषताएं:

  1. यह कंसोल। लॉग को सुरक्षित रूप से ओवरराइड करता है
  2. अगर कंसोल उपलब्ध नहीं है तो ध्यान रखें (ओह हाँ, आपको उस पर भी ध्यान देना चाहिए।)
  3. बाद में पुनर्प्राप्ति के लिए सभी लॉग स्टोर करता है (भले ही वे दब गए हों)
  4. log , warn , error , info जैसे प्रमुख कंसोल फ़ंक्शन को हैंडल करता है

संशोधनों के लिए खुला है और जब भी नए सुझाव आएंगे तो अपडेट किया जाएगा।

मैंने यह लिखा:

 //Make a copy of the old console. var oldConsole = Object.assign({}, console); //This function redefine the caller with the original one. (well, at least i expect this to work in chrome, not tested in others) function setEnabled(bool) { if (bool) { //Rewrites the disable function with the original one. console[this.name] = oldConsole[this.name]; //Make sure the setEnable will be callable from original one. console[this.name].setEnabled = setEnabled; } else { //Rewrites the original. var fn = function () {/*function disabled, to enable call console.fn.setEnabled(true)*/}; //Defines the name, to remember. Object.defineProperty(fn, "name", {value: this.name}); //replace the original with the empty one. console[this.name] = fn; //set the enable function console[this.name].setEnabled = setEnabled } } 

दुर्भाग्य से यह सख्त मोड का उपयोग करने पर काम नहीं करता है।

इसलिए console.fn.setEnabled = setEnabled का उपयोग करें और फिर console.fn.setEnabled(false) जहां fn लगभग कोई भी कंसोल फ़ंक्शन हो सकता है। आपके मामले के लिए होगा:

 console.log.setEnabled = setEnabled; console.log.setEnabled(false); 

मैंने यह भी लिखा है:

 var FLAGS = {}; FLAGS.DEBUG = true; FLAGS.INFO = false; FLAGS.LOG = false; //Adding dir, table, or other would put the setEnabled on the respective console functions. function makeThemSwitchable(opt) { var keysArr = Object.keys(opt); //its better use this type of for. for (var x = 0; x < keysArr.length; x++) { var key = keysArr[x]; var lowerKey = key.toLowerCase(); //Only if the key exists if (console[lowerKey]) { //define the function console[lowerKey].setEnabled = setEnabled; //Make it enabled/disabled by key. console[lowerKey].setEnabled(opt[key]); } } } //Put the set enabled function on the original console using the defined flags and set them. makeThemSwitchable(FLAGS); 

तो फिर आपको FLAGS को मूलभूत मूल्य (उपरोक्त कोड निष्पादित करने से पहले) में FLAGS.LOG = false , जैसे कि FLAGS.LOG = false और लॉग फ़ंक्शन डिफ़ॉल्ट रूप से अक्षम हो जाएगा, और फिर भी आप इसे FLAGS.LOG = false सक्षम कर सकते हैं console.log.setEnabled(true) सक्षम console.log.setEnabled(true)

इसे विंडो के सभी तरीकों को ओवरराइड करना चाहिए। Console आप इसे अपनी स्क्रिप्ट अनुभाग के शीर्ष पर रख सकते हैं, और यदि आप किसी PHP फ़्रेमवर्क पर हैं तो आप केवल तब ही इस कोड को प्रिंट कर सकते हैं जब आपका ऐप वातावरण उत्पादन होता है, या यदि किसी प्रकार का डीबग फ़्लैग अक्षम होता है तब आपके पास आपके कोड में विकास के वातावरण या डिबग मोड में काम करने के लिए आपके सभी लॉग होंगे।

 window.console = (function(originalConsole){ var api = {}; var props = Object.keys(originalConsole); for (var i=0; i<props.length; i++) { api[props[i]] = function(){}; } return api; })(window.console); 

मैंने पहले विंस्टन लॉगर का इस्तेमाल किया है

आजकल मैं नीचे से अनुभव से सरल कोड का उपयोग कर रहा हूं:

  1. पर्यावरण चर सेट करें (उदाहरण, Windows पर):

     setx LOG_LEVEL info 

बेशक, यह आपके कोड में एक चर हो सकता है अगर आप चाहें

  1. कमांड लाइन को पुनरारंभ करें, या, आईडीई / संपादक जैसे नेटबीन्स

  2. कोड की तरह नीचे है:

     console.debug = console.log; // define debug function console.silly = console.log; // define silly function switch (process.env.LOG_LEVEL) { case 'debug': case 'silly': // print everything break; case 'dir': case 'log': console.debug = function () {}; console.silly = function () {}; break; case 'info': console.debug = function () {}; console.silly = function () {}; console.dir = function () {}; console.log = function () {}; break; case 'trace': // similar to error, both may print stack trace/ frames case 'warn': // since warn() function is an alias for error() case 'error': console.debug = function () {}; console.silly = function () {}; console.dir = function () {}; console.log = function () {}; console.info = function () {}; break; } 
  3. अब नीचे सभी कंसोल का प्रयोग करें। *

     console.error(' this is a error message '); // will print console.warn(' this is a warn message '); // will print console.trace(' this is a trace message '); // will print console.info(' this is a info message '); // will print, LOG_LEVEL is set to this console.log(' this is a log message '); // will NOT print console.dir(' this is a dir message '); // will NOT print console.silly(' this is a silly message '); // will NOT print console.debug(' this is a debug message '); // will NOT print 

अब, बिंदु 1 में आपके LOG_LEVEL सेटिंग के आधार पर, ऊपर के कुछ प्रिंट होंगे, अन्य प्रिंट नहीं करेंगे