2008-10-02 15 views
5

लॉग 4j या इसी तरह के पुस्तकालयों में लॉग श्रेणियों के लिए आप किस सम्मेलन का उपयोग करते हैं? आमतौर पर आप कक्षा के नाम श्रेणियों के रूप में देखते हैं, लेकिन क्या आपने अन्य सिस्टम का उपयोग किया है?लॉगिंग सम्मेलन

लॉग स्तर के बारे में क्या? आप किस स्तर का उपयोग करते हैं और किस मामले में?

अद्यतन: जैसा कि आप में से कुछ ने उत्तर दिया, कोई 'सही' उत्तर नहीं है। मैं सिर्फ प्रेरणा के संभावित स्रोत के रूप में उपयोग करने वाले विभिन्न सम्मेलनों की तलाश में हूं।

उत्तर

1

मेरे पास 3 स्तर हैं: त्रुटियां, चेतावनियां और वर्बोज़ लॉग यह बताती है कि प्रोग्राम एक समय में क्या कर रहा है।

मैं कक्षा + फ़ंक्शन का संदर्भ के रूप में उपयोग करता हूं।

0

हमने पिछले कुछ सालों में इस बारे में व्यापक बहस की है और केवल एक ही बात यह है कि हम सभी सहमत हैं कि कोई सही जवाब नहीं है!

जो हमने तय किया है वह व्यापक श्रेणियों के बीच अंतर करने के लिए शीर्ष स्तर की श्रेणी का नाम उपयोग कर रहा है: उदा। 'ऑपरेशन' किसी भी चीज से संबंधित है जो उपयोगकर्ता की परवाह कर सकता है, 'आंतरिक' केवल उन चीज़ों से संबंधित है जो डेवलपर की परवाह करेंगे, 'ऑडिट' का उपयोग रोचक घटनाओं को ट्रैक करने के लिए किया जाता है।

इसके अलावा हम सीमाओं की संख्या को सीमित करने की कोशिश करते हैं, क्योंकि हम पाते हैं कि कोई भी उन्हें अधिक विस्तृत स्तर पर चालू/बंद नहीं करता है। तो कक्षा के नामों के बजाय हम उन्हें कार्यात्मक क्षेत्र में समूहित करने का प्रयास करते हैं, उदाहरण के लिए। प्रश्न, अद्यतन, आदि

0

लॉगिंग आपकी आवश्यकता पर निर्भर करती है। यदि आप एक लॉग बना रहे हैं जो किसी भी समस्या (जैसे अपवाद लॉगिंग) पर टैब रखता है, तो आपको केवल कक्षा और फ़ंक्शन नाम की आवश्यकता हो सकती है।

हालांकि, अगर आपके पास प्रकार के निशान बनाने और लेखापरीक्षा के लिए एक कार्यात्मक आवश्यकता है, तो लॉगिंग को पूरी तरह से विस्तार के स्तर पर ले जाना होगा।

0

हमारे पास डीबग लॉग हैं जो कक्षा + विधि हैं।

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

डिबगिंग करते समय हम पैकेज/कक्षा सेट करेंगे, हम लॉग 4j में DEBUG को डिबग कर रहे हैं, जबकि ERROR पर रूटब्लॉगर छोड़ते हैं, और हमारे पास इसके लिए एक डिबगिंग लॉग फ़ाइल होगी जो आशा करता है कि अन्य क्षेत्रों से सभी गम्पफ लॉगिंग छोड़ दें आवेदन पत्र।

लेकिन इन चीजों को करने के लिए वास्तव में 'सही तरीका' नहीं है। तंत्र का संयोजन अच्छा लगता है लेकिन यह उस पर निर्भर करता है कि आप क्या लॉग करना चाहते हैं।

1

मैं Vaibhav's answer से सहमत हूं: आपको पता होना चाहिए कि आप लॉगिंग क्यों कर रहे हैं।

    डिबग के लिए
  • आंतरिक तकनीकी डिबग जानकारियां, log4j या किसी अन्य पुस्तकालय है ठीक (बशर्ते उनके उपयोग कृत्रिम रूप से कार्यों का cyclomatic complexity बढ़ाने नहीं करता है)
  • अनुप्रस्थ समयनिष्ठ प्रवेश करने के लिए (पूरे कोड के पार), कुछ Aspect-Oriented approach बेहतर अनुकूल
  • निगरानी के लिए है, तो आप डेटाबेस के कुछ प्रकार के लिए (TIBCO की तरह उदाहरण के लिए) एक प्रकाशन बस के माध्यम से उन जानकारी रिकॉर्ड करने की आवश्यकता के साथ, प्रवेश के पूरे अन्य स्तर, अर्थात् KPI दर्ज करें।

तो केवल आंतरिक प्रवेश के लिए, हम एक सुंदर मानक दृष्टिकोण का पालन करें:

  • किसी भी त्रुटि है कि कार्यक्रम के लिए जोखिम में डाल सकती गंभीर
  • कुछ उप के लिए आंतरिक प्रगति
  • ठीक निम्नलिखित के लिए
  • की जानकारी -स्टेप विवरण

ग्रैन्युलरिटी (शास्त्रीय आंतरिक लॉगिंग के लिए) मुख्य वर्ग है, मुख्य स्टीफ का प्रभारी प्रक्रिया के पीएस।

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