खोज…
बेसिक सर्वर साइड लॉगिंग
लॉगिंग का पहला चरण केवल शेल से उल्का को चलाने के लिए है, और आपको कमांड लॉग में सर्वर लॉग मिलेगा।
meteor
अगला कदम std_out और std_err की सामग्री को लॉगफ़ाइल में पाइप करना है, जैसे:
meteor > my_app_log.log 2> my_app_err.log
क्लाइंट साइड लॉगिंग टूल
एक बार जब आप अपना सर्वर साइड लॉग-इन कर लेते हैं, तो यह क्लाइंट की तरफ बढ़ने का समय होता है। यदि आपने कंसोल API की खोज नहीं की है, तो उपचार के लिए तैयार रहें। वहाँ वास्तव में सभी प्रकार की चीजें हैं जो आप कंसोल में निर्मित एपीआई के साथ कर सकते हैं जो प्रत्येक क्रोम और सफारी स्थापना के मूल निवासी हैं। इतना तो, वास्तव में, कि आप खुद को विंस्टन या अन्य लॉगिंग फ्रेमवर्क की आवश्यकता नहीं पा सकते हैं।
पहली चीज़ जो आप करना चाहते हैं वह है क्लाइंट साइड लॉगिंग और डेवलपर टूल। क्रोम और सफारी दोनों उनके साथ जहाज करते हैं, लेकिन फ़ायरफ़ॉक्स को फ़ायरबग एक्सटेंशन की आवश्यकता होती है।
फिर, आप कंसोल API दस्तावेज़ देखना चाहेंगे। कंसोल लॉगिंग सीखने के लिए निम्नलिखित दो दस्तावेज अमूल्य संसाधन हैं।
उन्नत सर्वर लॉगिंग उपकरण
एक बार जब आपके पास सर्वर-साइड लॉगिंग रनिंग और आपके क्लाइंट साइड डेवलपमेंट टूल दोनों हों, तो आप Meteor Chrome DevTools Extension जैसे विशिष्ट विशिष्ट एक्सटेंशन देखना शुरू कर सकते हैं। यह आपको वास्तव में क्लाइंट में सर्वर लॉगिंग का निरीक्षण करने देता है! क्योंकि डेटाबेस हर जगह है। जैसा कि लॉगिंग है।
क्रोम DevTools एक्सटेंशन (सर्वर)
डेटाबेस फ्लैप पर लॉगिंग त्रुटि
निम्न उदाहरण 0.5 - 0.7 दिनों का है, और दिखाता है कि जब डेटाबेस ने क्लाइंट साइड कर्सर को अभी तक पॉपुलेट नहीं किया है तो त्रुटि कैसे दर्ज करें।
Template.landingPage.postsList = function(){
try{
return Posts.find();
}catch(error){
//color code the error (red)
console.error(error);
}
}
टेम्पलेट हेल्पर में डेटा संदर्भ पर लॉगिंग जानकारी
निम्नलिखित क्रोम लॉगिंग एपीआई का उपयोग करता है। यदि .group()
सिंटैक्स का उपयोग कई टेम्प्लेट में किया जाता है, तो यह ग्राफ़िक्स को अलग-अलग टेम्प्लेट से एक पदानुक्रम ट्री में कंसोल लॉग को व्यवस्थित करेगा।
आप यह भी देख सकते हैं कि वर्तमान डेटा संदर्भ का निरीक्षण कैसे करें, और डेटा को कैसे कठोर करें।
Template.landingPage.getId = function(){
// using a group block to illustrate function scoping
console.group('coolFunction');
// inspect the current data object that landingPage is using
console.log(this);
// inspect a specific field of the locally scoped data object
console.log(JSON.stringify(this._id);
// close the function scope
console.groupEnd();
return this._id;
}
लॉगिंग इवेंट्स और उपयोगकर्ता इंटरैक्शन
क्रोम लॉगिंग एपीआई का उपयोग करने का सरल उदाहरण।
Template.landingPage.events({
'click .selectItemButton':function(){
// color code and count the user interaction (blue)
console.count('click .selectItemButton');
}
});
लॉग स्तर चर के साथ लॉगिंग
लॉगिंग अक्सर कंसोल को अव्यवस्थित कर सकता है, इसलिए डेटा के किस विस्तार को लॉग किया जा रहा है इसे नियंत्रित करने के लिए लॉग स्तर को परिभाषित करना आम है। एक सामान्य पैटर्न एक लॉग स्तर चर को निर्दिष्ट करना है।
var DEBUG = false;
var TRACE = false;
Template.landingPage.events({
'click .selectItemButton':function(){
TRACE && console.count('click .selectItemButton');
Meteor.call('niftyAction', function(errorMessage, result){
if(errorMessage){
DEBUG && console.error(errorMessage);
}
});
}
});
उत्पादन में लॉगिंग अक्षम करें
कुछ टीमों ने पाया कि वे अपने कोड में कंसोल लॉग स्टेटमेंट छोड़ना चाहते हैं, लेकिन उन्हें उत्पादन में प्रदर्शित नहीं किया गया है। यदि चर सेट नहीं किया जाता है (संभवतः एक पर्यावरण चर) तो वे लॉगिंग फ़ंक्शन को ओवरराइड करेंगे। इसके अतिरिक्त, यह कुछ स्थितियों में सुरक्षा सुविधा के रूप में योग्य हो सकता है।
if (!DEBUG_MODE_ON) {
console = console || {};
console.log = function(){};
console.log = function(){};
console.error = function(){};
console.count = function(){};
console.info = function(){};
}
विंस्टन
यदि आपको डिफ़ॉल्ट लॉगिंग विकल्पों की तुलना में कुछ अधिक शक्तिशाली चाहिए, तो आप विंस्टन जैसे टूल को देखना चाहेंगे। वायुमंडल में जाएं, और बस उपलब्ध कई विंस्टन पैकेजों में से एक को खोजें।
https://atmospherejs.com/?q=winston
हालांकि, चेतावनी दी है - विंस्टन एक परिष्कृत उत्पाद है, और जब यह बहुत अधिक कार्यक्षमता को उजागर करता है, तो यह आपके आवेदन में जटिलता की एक परत भी जोड़ देगा।
छांटने का स्तर
लॉगलेवल पैकेज विकसित समुदाय के लिए एक विशेष उल्लेख किया जाना चाहिए। यह उल्कापिंड के बंडल पाइपलाइन के साथ अच्छी तरह से काम करने और लाइन नंबर और फिल्म्स को संरक्षित करने के दौरान हल्के और सरल होने के बीच संतुलन कायम करता है।
https://atmospherejs.com/practicalmeteor/loglevel