2008-10-23 8 views
5

बस सोच रहा है कि लोग अपने अनुप्रयोगों में कितने लॉग इन करते हैं ???किसी एप्लिकेशन के भीतर लॉग इन करना कितना है और कितना अधिक है?

मैं इस देखा है:

"मैं आम तौर पर किसी भी अपवाद है कि आवेदन द्वारा पकड़ा रहे हैं प्रवेश करने के लिए त्रुटि लॉग स्तर का उपयोग करना चाहते मैं के रूप में एक जानकारी लॉग स्तर का प्रयोग करेंगे।" पहले स्तर " डिबगिंग योजना दिखाने के लिए जब भी मैं में प्रवेश या एक विधि से बाहर निकलने के । वहां से मैं में विस्तृत जानकारी का पता लगाने के डीबग लॉग स्तर का उपयोग । घातक लॉग स्तर किसी भी अपवाद है कि मैं में पकड़ने के लिए विफल रहे हैं के लिए प्रयोग किया जाता है मेरी वेब आधारित आवेदन। "

कौन सा के साथ इस कोड नमूना था:

Public Class LogSample 

    Private Shared ReadOnly Log As log4net.ILog = log4net.LogManager.GetLogger(GetType(LogSample)) 

    Public Function AddNumbers(ByVal Number1 As Integer, ByVal Number2 As Integer) As Integer 

     Dim intResults As Integer 

     Log.Info("Starting AddNumbers Method...") 
     Log.Debug("Number1 Specified: " & Number1) 
     Log.Debug("Number2 Specified: " & Number2) 

     intResults = Number1 + Number2 

     Try 

     intResults = Number1 + Number2 

     Catch ex As Exception 

     Log.Error("Error Adding Nubmers.", ex) 

     End Try 

     Log.Info("AddNumbers Method Complete.") 

     Return intResults 

    End Function 

End Class 

लेकिन यह सिर्फ विधि के लिए इतना जोड़ने के लिए लगता है। उदाहरण के लिए एक वर्ग जो आम तौर पर कोड की 7 लाइनें हो सकती है अचानक कोड की 12 पंक्तियां बन जाती है। विधि में इसकी कुछ स्पष्टता और सादगी भी खो जाती है।

लेकिन यह कहकर कि लॉगिंग करने का लाभ अच्छा हो सकता है। एक उत्पादन प्रणाली में उदाहरण के प्रदर्शन की निगरानी के लिए, उत्पादन में असामान्य कीड़े नीचे का पीछा करते हुए (नहीं तो आप इस सब लॉगिंग हर समय चालू

इसलिए मैं सोच रहा हूँ लोग क्या करते हैं होगा।? चीयर्स एंथोनी

+0

http://stackoverflow.com/questions/163385/logging- सम्मेलन –

उत्तर

3

आप सही हैं कि यह कोड को पढ़ने और बनाए रखने में अधिक कठिन बना देता है। एक अनुशंसा है कि आप अपने लॉगिंग तर्क को अपने एप्लिकेशन तर्क से अलग करने के लिए एओपी (पहलू उन्मुख प्रोग्रामिंग) टूल को देखने पर विचार करें। कैसल विंडसर और वसंत दो हैं जो आते हैं .Net समुदाय के भीतर दिमाग जिसे आप शोध करना चाहते हैं।

0

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

तकनीक, केवल लॉग लिखते हैं, और लॉग सर्वर का उपयोग कर एक प्रणाली की पूर्वव्यापी सुरक्षा को मजबूत कर सकते हैं। एक संभावित डीडीओएस हमले के बाद कंपनी हुई है, इसमें कोई संदेह नहीं होगा कि हमले की जांच करना है। एक जांच केवल संभव है यदि लॉगिंग का सही स्तर उपयोग किया गया हो। बहुत अधिक और लॉग जल्दी से भर जाएंगे, जो पहले स्थान पर DoS का कारण हो सकता है। बहुत कम और लॉग बेकार होंगे क्योंकि वे में पर पर्याप्त जानकारी नहीं है आपराधिक को पकड़ें।

3

यह कला प्रोग्रामिंग के पक्ष में है।

आप सब कुछ लॉग इन नहीं करना चाहते हैं। लेकिन आप सिस्टम के सबसे महत्वपूर्ण भागों को लॉग करना चाहते हैं।

बस अपने कार्यक्रम के बारे में व्यापक अर्थ में सोचें और यह पहचानने की कोशिश करें कि उत्पादन में कुछ तोड़ने के मामले में आप कौन सी जानकारी चाहते हैं। अपने आवेदन के

एक शुरुआत के लिए, सभी मुख्य तर्क मॉड्यूल लॉगिंग कार्यक्षमता होना चाहिए। सजावटी भागों उदा। यूआई/एनीमेशन लॉगिंग की आवश्यकता नहीं है।

आईएमएचओ, प्रत्येक विधि प्रविष्टि/निकास लॉगिंग करना अधिक है और विशेष रूप से आप एक स्टैक ट्रेस एम्बेड कर सकते हैं क्योंकि शोर भी उत्पन्न होगा।

और प्रदर्शन के लिए, प्रोफाइलर का उपयोग करें।

+0

लॉगिंग एक ऑफ़लाइन प्रोफाइलर है। आपके पास कुछ और नहीं हो सकता है। –

3

... अरे, क्या मुझे एक प्रश्न में विषय के रूप में उद्धृत करने के लिए बैज मिलता है? 8^डी

लेकिन गंभीरता से हालांकि, एक बात जो मैं उपरोक्त लॉगिंग टिप्पणी के बारे में स्पष्टीकरण देना चाहता हूं वह यह है कि "वर्बोज़" लॉगिंग के लिए मेरे औचित्य का वह हिस्सा इस तथ्य पर आधारित है कि मैं लॉग 4नेट की विशेषताओं का लाभ उठा रहा हूं।

नमूना मैं प्रदान की है, में एक दैनिक आधार पर कि विधि लॉग मोड चेतावनी दी है। जिसका अर्थ है कि "डिफ़ॉल्ट रूप से" लॉग इन होने वाली एकमात्र चीज यह है कि यदि कोई अपवाद होता है। अगर मुझे एप्लिकेशन में कोई त्रुटि होने के बारे में मेरे किसी एक क्लाइंट से कॉल प्राप्त होता है, तो उन्हें स्क्रीन पर मुझे कुछ गुप्त संदेश पढ़ने की ज़रूरत नहीं है, मैं लॉग में कूदता हूं और देख सकता हूं कि क्या हो रहा है। ज्यादातर समय, जवाब वहीं है।

अगर जवाब आसानी से उपलब्ध नहीं है तो क्या होगा? Log4net मुझे मेरी कॉन्फ़िगरेशन फ़ाइल को अपडेट करने की अनुमति देता है (कोई पुन: संकलन आवश्यक नहीं है, सिसडमिन की स्वीकृति के साथ वेब सर्वर पर कुछ विशेष सिस्टम फ़ाइल तक पहुंच प्राप्त करने की आवश्यकता नहीं है) और INFO मोड में जाएं। अब आप लॉगिंग की दूसरी परत देखना शुरू कर देते हैं। हो सकता है कि कोड इसे किसी निश्चित लूप पर कभी नहीं बनाया। हो सकता है कि डेटा पुनर्प्राप्ति के पास एक खाली रिकॉर्ड सेट था। डिबगिंग का यह दूसरा स्तर सहायक है, और लॉग केवल थोड़ा बड़ा हो जाता है। एक बार यह हो जाने के बाद, मैं फिर से कॉन्फ़िगरेशन बदल सकता हूं और लाइट लॉगिंग पर वापस जा सकता हूं।

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

मैं वहां से अधिकांश लोगों से सहमत हूं कि अत्यधिक लॉगिंग वास्तव में एक आवेदन ला सकती है और इससे अधिक समस्याएं उत्पन्न होती हैं। यदि किसी एप्लिकेशन में इस तरह के वर्बोज़ लॉगिंग की अनुशंसा नहीं की जाएगी, तब तक जब तक एप्लिकेशन ने सुरक्षा कारणों से इसे वारंट नहीं किया हो। हालांकि, जब आवश्यक हो तो वर्बोज़ लॉगिंग का लाभ उठाने में सक्षम होने और मेरे कोड को दोबारा बनाने के बिना मेरी राय में एक बड़ा लाभ है और यदि आपके पास एक ढांचा है जो आसानी से (जैसे लॉग 4नेट) की अनुमति दे सकता है, तो मैं कहता हूं कि अच्छा और वर्बोज़ और यदि आप कोड में वापस जाना चाहते हैं तो लॉग कोड संदर्भों को मानसिक रूप से फ़िल्टर करना काफी आसान है।

मैं माफी माँगता हूँ अगर मैं बचाव की मुद्रा में या ranting ध्वनि, मुझे लगता है कि किसी भी संबंध में मतलब यह नहीं है। मैं बस थोड़ा और पृष्ठभूमि प्रदान करना चाहता था कि मैंने विधिवत विधि में लॉग 4नेट का उपयोग करके अपना लॉगिंग कैसे सेटअप किया। 8^डी

+0

अरे आदमी ... इसे एक पूरक के रूप में लें जिसे मैंने आपको स्रोत के रूप में उपयोग किया। रास्ते से महान लेख और इसने मुझे कुछ चीजों पर पुनर्विचार करने के लिए प्रेरित किया इसे एक बुरी चीज के रूप में न लें। – vdhant

+1

लॉगिंग अनिवार्य रूप से ऑफ़लाइन डीबगर है जहां आपने पहले से ही सभी प्रश्न तैयार किए होंगे। –

0

कम से कम आपको त्रुटियों को लॉग करना चाहिए और बाहरी घटक को कॉल करना चाहिए ... आपके द्वारा प्रदान किया गया नमूना वह है जो मैं बहुत अधिक लॉगिंग कहूंगा ... लॉगिंग का कोई मतलब नहीं है कि आप विधि की शुरुआत, या किसी विधि के अंत में, या यहां तक ​​कि पैराम को विधि में पारित किया गया था ... यह डिस्क स्थान का अपशिष्ट है, आप लॉग फ़ाइल को किसी भी समय बहुत बड़ा नहीं मिलेगा ...

RWendi

0

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

.NET के लिए, आप एओपी लाइब्रेरी, पोस्टशर्प का उपयोग कर सकते हैं ताकि तर्कों के मूल्यों के साथ एक फ़ंक्शन के प्रवेश और बाहर निकलने में सहायता मिल सके।

आपके आवेदन लॉग इन करने के लिए कितना, इस लेख "System Logging and Log Analysis "मार्कस Ranum द्वारा की जाँच का निर्धारण करने में मदद के लिए।

आशा इस मदद करता है।

संबंधित मुद्दे