2010-11-12 11 views
106

में मार्करों का उपयोग करने के लिए सर्वोत्तम प्रथाएं हम थोड़ी देर के लिए हमारी परियोजना में एसएलएफ 4 जे + लॉगबैक संयोजन का उपयोग कर रहे हैं और इसके साथ काफी खुश हैं, लेकिन हमारी लॉगिंग रणनीति सीधी कक्षा आधारित लॉगर्स और कोई फैंसी सामान का उपयोग करके काफी सरल है एमडीसी या मार्कर की तरह।एसएलएफ 4 जे/लॉगबैक

मैं क्या जानना चाहता हूं कि समुदाय में कोई वास्तव में इन सुविधाओं का उपयोग करता है और लॉगिंग/फ़िल्टरिंग में सुधार के लिए उनका उपयोग कैसे किया जाता है।

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

लॉगिंग में मार्कर बनाने और उपयोग करने के लिए सर्वोत्तम प्रथाओं, सम्मेलनों या रणनीतियों का क्या हो सकता है।

अद्यतन: मुझे लगता है कि, क्या मैं वास्तव में के बाद कर रहा हूँ इतना क्यों मार्कर का उपयोग नहीं है, बल्कि कैसे हिस्सा — वहाँ (नामकरण मार्कर से कुछ अच्छी प्रथाओं जैसे रिक्त स्थान के साथ सादे पाठ का उपयोग कर रहा है या डैश/अंडरस्कोर/विराम चिह्न सीमित कीवर्ड शैली के नाम), क्या "मानक नाम" के कुछ प्रकार के पूल होना चाहिए, व्यवसाय कार्यों के आधार पर सामान नामकरण करना चाहिए। सवाल मैं शायद अपने आप के लिए यह पता लगाने कर सकते हैं, लेकिन अगर मैं योजनाबद्ध तरीके से इन सुविधाओं का उपयोग करने और उन्हें डेवलपर्स की एक टीम को लागू करने के लिए चाहते हैं, यह समझ में आता है के आसपास कुछ दिशा-निर्देश formalizeable सेट करने के लिए ...


[1] - का उपयोग करके मार्करों का उपयोग करके मैं सचमुच पूछता हूं कि एपीआई का उपयोग कैसे करें (यह वास्तव में काफी आगे है) - मैं अधिक सामान्य स्तर का जिक्र कर रहा हूं कि मार्करों का उपयोग करके लॉगिंग कैसे सेट किया जाएगा लगातार

उत्तर

85

सबसे पहले, के रूप में @darioo ने कहा:

  • MDC साथ कुछ "entiti कई घटनाओं जोड़ने के लिए प्रयोग किया जाता है तों विशेष "देता है जिन्हें आप हमेशा की तरह लोगों

में से हटा दिए गए हैं चाहता हूँ"

  • [मार्करों] के लिए उपयोग किया जाता है "तो आपके दावा है कि आप इस के लिए MDC उपयोग करना चाहते हैं। मार्कर "विशेष" घटनाओं को हाइलाइट करने के लिए हैं - फ़िल्टरिंग, यदि आप करेंगे - "स्लाइसिंग" के बजाए। उदाहरण के लिए, आप किसी विशेष उपयोगकर्ता के आधार पर टुकड़ा कर सकते हैं, लेकिन किसी भी अप्रत्याशित अपवादों के आधार पर फ़िल्टर करें। इस मामले में, आप उपयोगकर्ता एमडीसी आयाम और अप्रत्याशित अपवाद मार्कर बनाएंगे।


    लेकिन यह स्पष्ट रूप से आपके मन में मौजूद प्रश्न को संबोधित नहीं करता है। आप "अधिक सामान्य स्तर का जिक्र कर रहे हैं कि कैसे एक लगातार मार्करों का उपयोग करके लॉगिंग सेट अप करेगा।" तो चलो कि संबोधित करते हैं:

    MDC टुकड़ा करने की क्रिया और dicing के लिए है, और मार्करों छानने के लिए कर रहे हैं। ये गतिविधियां परीक्षण और उत्पादन के दौरान के दौरान की जाती हैं। इस प्रकार, आपको यह तय करने की आवश्यकता है कि आप कौन से आयामों को लॉग डेटा को टुकड़ा करने के लिए उपयोगी हो सकते हैं, और परीक्षण/उत्पादन के आसपास होने पर इसे फ़िल्टर करने के लिए कौन सा मामला उपयोगी हो सकता है। प्रत्येक आयाम को एमडीसी आयाम मिलता है। प्रत्येक मामले में मार्कर मिलता है। यह उतना आसान है जितना।

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

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

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

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

  • +7

    ग्रेट उत्तर। मैं तर्क दूंगा कि एमडीसी जो थ्रेड आधारित डेटा संरचना है, फ़िल्टरिंग के लिए भी इस्तेमाल किया जा सकता है। – Ceki

    +0

    ग्रेट उत्तर। लेकिन _ESL कर्मचारी_ क्या है? – DerMike

    +0

    धन्यवाद। इंग्लिश दूसरी भाषा के तोर पर। – user359996

    61

    पहला, एमडीसी।

    एमडीसी वास्तव में ऐसे माहौल में उपयोगी है जहां आपके पास एक "इकाई" है जो कुछ व्यवहार से जुड़ी है। एक सामान्य उदाहरण: उपयोगकर्ता एक वेब अनुप्रयोग के साथ बातचीत कर रहा है। तो, मान लें कि आपके पास अपने वेब ऐप के साथ कई उपयोगकर्ता गड़बड़ कर रहे हैं। एमडीसी का उपयोग करके, आप आसानी से बिना किसी परेशानी के उन्हें ट्रैक कर सकते हैं। सरलीकृत उदाहरण:

    ...[Sandy][abcd] clicked on "change profile" 
    ...[Joe][1234] clicked on "weather reports" 
    ...[Joe][1234] clicked on "Europe" 
    ...[Sandy][abcd] clicked on "logout" 
    ...[Joe][1234] clicked on "logout" 
    ...[Sandy][efgh] logged in 
    

    यहाँ, आप दो स्थानों पर MDC उपयोग कर रहे हैं: उपयोगकर्ता नाम और सत्र आईडी के लिए। इस तरह, आप आसानी से एक उपयोगकर्ता के सत्र को देख सकते हैं ताकि वे जो भी कर रहे हैं उसे देख सकें।

    दूसरा, मार्कर।

    मार्कर आमतौर पर "विशेष" परिस्थितियों के लिए उपयोग किए जाते हैं, जैसे कुछ गंभीर गंभीर त्रुटियों के लिए व्यवस्थापक को ईमेल भेजना। सभी त्रुटियों को हमेशा एक ही श्रेणी में नहीं गिरता है; कुछ को उचित तरीके से निपटाया जाना है।

    या, जब कोई उपयोगकर्ता आपकी सेवा से निकलता है, तो यह आमतौर पर एक आईएनएफओ लॉग में जाता है, लेकिन आप इस तरह के उदाहरणों के लिए मार्कर का उपयोग भी कर सकते हैं, यदि आप इस तरह की घटनाओं को एक अलग लॉग फ़ाइल में जाना चाहते हैं, तो आप छोड़ने वाले उपयोगकर्ताओं की सांख्यिकीय सभा के लिए इसे अधिक आसानी से देख सकते हैं।अंगूठे का

    नियम:

    • MDC कुछ "संस्थाओं"
    • मार्कर "विशेष" की घटनाओं है कि आप हमेशा की तरह लोगों
    में से हटा दिए गए हैं करना चाहते हैं के लिए उपयोग किया जाता है के साथ कई घटनाओं जोड़ने के लिए प्रयोग किया जाता है
    +2

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

    +2

    @ रोलैंड: मैंने कुछ उदाहरण जोड़े हैं, लेकिन मैं सभी उदाहरणों को जोड़ नहीं सकता क्योंकि वे परिभाषा के अनुसार, असीमित हैं। यदि आप मार्करों के लिए प्रेरणा और कारण समझते हैं, तो उनका उपयोग केवल आपकी कल्पना, और सामान्य ज्ञान से ही सीमित है। – darioo

    25

    मार्करों का उपयोग रंग पर किया जा सकता है या एकल लॉग स्टेटमेंट चिह्नित करें। इन रंगों के साथ आप क्या करते हैं, यानी मार्कर, पूरी तरह से आपके ऊपर हैं। हालांकि, मार्कर उपयोग के लिए दो पैटर्न सामान्य (दूसरे से पहले आम हैं) प्रतीत होते हैं।

    1. ट्रिगर: कुछ appender एक निश्चित मार्कर की उपस्थिति में एक कार्रवाई करने के लिए निर्देश दिए जा सकता है। उदाहरण के लिए, लॉग स्तर के बावजूद NOTIFY_ADMIN मार्कर के साथ लॉगिंग ईवेंट चिह्नित होने पर SMTPAppender को ईमेल भेजने के लिए कॉन्फ़िगर किया जा सकता है। लॉगबैक दस्तावेज़ में marker-based triggering देखें। आप ट्रिगरिंग के लिए लॉग स्तर और मार्कर भी जोड़ सकते हैं।

    2. फ़िल्टरिंग: उदाहरण के लिए आप रंग "डीबी" के साथ अपने सभी दृढ़ता से जुड़े लॉग (विभिन्न और एकाधिक वर्ग फ़ाइलों में) रंग/चिह्न कर सकते हैं। फिर आप "डीबी" के लिए फ़िल्टर कर सकते हैं: डीबी के साथ चिह्नित लॉग स्टेटमेंट को छोड़कर लॉगिंग अक्षम करें। अधिक जानकारी के लिए लॉगबैक दस्तावेज़ में chapter on filters देखें (मार्करफ़िल्टर के लिए खोजें)।

    6

    बस परिशिष्ट के रूप में, यदि आप logstash उपयोग कर रहे हैं और json लॉगिंग सक्षम की गई, वहाँ मार्कर का एक और संभावित फायदा नहीं है - लॉगिंग चर एक विशिष्ट लॉग संदेश के साथ संबद्ध करने के लिए। यह संदेश निकाय में शामिल करने से अधिक पार्स करने के लिए अधिक सुसंगत और आसान है। बहुत उपयोगी, अगर यह आपके उपयोग-मामले के अनुरूप है। यहाँ

    विवरण

    देखें:

    https://github.com/logstash/logstash-logback-encoder#loggingevent_custom_event

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