पाठ फ़ाइल या डेटाबेस में प्रवेश करना?


25

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



यह भी मदद मिल सकती है stackoverflow.com/questions/3458813/...
मुहम्मद राजा


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

जवाबों:


16

बहुत सामान्य शब्दों में, किसी डेटाबेस में लॉगिंग की तुलना में टेक्स्ट फाइल में लॉग इन करना बहुत तेज है। यह लॉगिंग का मुख्य पहलू है जिस पर आपको विचार करने की आवश्यकता है।

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

आदर्श एक फ़ाइल में स्थानीय रूप से लॉग इन करना होगा, और बाद में जरूरत पड़ने पर इस डेटा को निरीक्षण के लिए एक DB में माइग्रेट करना होगा।

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


1
एक और व्यवस्था जो मैंने देखी है, वह है स्थानीय स्तर पर शुरू में लिखे जाने वाले लॉग के लिए और फिर किसी तरह के बैकग्राउंड जॉब द्वारा डीबी को धकेल दिया जाना।
रॉबी डी

@RobbieDee मुझे यह विचार पसंद है। मेरे पास एक प्रकार का डुप्लिकेट प्रश्न है: क्या सीमित अवधि की लॉग फाइलें (जैसे पिछले 30 दिन केवल) होना आम है, लेकिन जैसे-जैसे लॉग डेटाबेस (जैसे साप्ताहिक) में धकेल दिए जाते हैं, तब सभी लॉग डेटाबेस में संग्रहीत हो जाते हैं => लॉग फाइलें कार्य करती हैं केवल एक बफ़र की तरह और डेटाबेस पर सभी रीड ऑपरेशन किए जाते हैं? जैसा कि DB में लिखने में देरी हो रही है, प्रदर्शन के बारे में कोई चिंता नहीं है, यह नहीं है।
अल-अन

9

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

आवेदन ब्रेडक्रंब

पेशेवरों: लागू करने के लिए आसान और सीधे उपयोगकर्ता को दिखाई दे रहा है

विपक्ष: सूचना केवल तब तक बनी रहती है जब आवेदन ऊपर होता है

पाठ फ़ाइल

पेशेवरों: लागू करने के लिए आसान है

विपक्ष: फाइल लॉकिंग सुनिश्चित करने की आवश्यकता नहीं है। जब लॉग ड्राइव पर डिस्क स्थान चलता है तो क्या करें?

इवेंट लोग

पेशेवरों: लागू करने के लिए आसान है

विपक्ष: इवेंट लॉग पूर्ण हो सकता है यदि सही तरीके से सेट नहीं किया गया है या अवधारण नीति / निकासी के कारण पुराने लॉग खो सकते हैं।

डेटाबेस

पेशेवरों: लागू करने के लिए आसान है

विपक्ष: अधिक DB यातायात। DB या अन्य DB समस्या के नुकसान को कैसे लॉग करें?

मैसेजिंग (MQ)

पेशेवरों: आग और भूल जाओ

विपक्ष: गलत होने के लिए एक और परत। स्थापित करने की आवश्यकता है


तुम भी syslog डेमॉन और SNMP लॉग गंतव्य शामिल करना चाहते हो सकता है।
gbjbaanb

@gbjbaanb वास्तव में - कुछ OS में ऐसी कार्यक्षमता निर्मित है - यह निश्चित रूप से एक विस्तृत सूची नहीं है। जब वे नीचे जाते हैं तो उच्च उपलब्धता प्रणालियाँ एसएमएस भी भेज सकती हैं।
रॉबी डी

2

ऑडिट लॉग को आपके डेटाबेस की सामग्री को पूरी तरह से सही बनाने के लक्ष्य के साथ, ऑडिट उद्देश्यों के लिए लंबे समय तक संचालन की पूर्ण पता लगाने की क्षमता सुनिश्चित करनी चाहिए।

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

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

यह ध्यान दिया जाएगा कि, जबकि इस तरह के लॉग ऑडिट लॉग्स की विश्वसनीयता प्रदर्शित करने के लिए इस्तेमाल किया जा सकता है (जैसे कोई अनधिकृत पहुंच नहीं), उनके पास आमतौर पर कम प्रतिधारण बाधाएं होती हैं (उदाहरण के लिए, कानून प्रवर्तन उद्देश्यों के लिए 6 महीने से 2 साल के बीच में दूरसंचार लॉग। यदि कोई अड़चन है।


1

डीबग लॉगिंग के लिए db का उपयोग करने के कई कारणों में से एक है जब आपके पास इवेंट व्यूअर या टेक्स्ट फ़ाइलों को देखने के लिए एप्लिकेशन या वेब सर्वर तक पहुंच नहीं है

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

आप फ़िल्टरिंग और आसान देखने के लिए DB टूल्स का उपयोग कर सकते हैं।


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

@RobbieDee क्या वेब सर्वर और वेब एप्लिकेशन के लिए भी मामला है? जैसा कि ओपी पूछ रहा है कि मुझे विश्वास है
मुहम्मद राजा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.