जावा लॉगिंग फ्रेमवर्क में मार्कर क्या हैं और उनका उपयोग करने का क्या कारण है?


110

पहली बार जब मैंने पढ़ा तो मार्करों के बारे में सुना:

http://slf4j.org/faq.html

मैं लकड़हारा वस्तु के लिए उपलब्ध तरीकों की जांच करता हूं :

और मिला इंटरफेस:

अधिक गहराई से जानकारी जो मुझे मिलती है:

लेकिन अभी भी उलझन में है ... ध्यान दें कि मैं पूछता हूं कि क्यों नहीं , उनका उपयोग कैसे करें, इसलिए यह कोई डुप्लिकेट नहीं है:

अद्यतन लगता है कि जब आप मार्करों का उपयोग करते हैं तो आपको XML या .property फ़ाइलों में कॉन्फ़िगरेशन करने के बजाय कस्टम जावा कोड लिखने की भी आवश्यकता होती है ...

अद्यतन 2 से http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluator

Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN");
logger.error(notifyAdmin,
  "This is a serious an error requiring the admin's attention",
   new Exception("Just testing"));

मार्करों का उपयोग करने के लिए आपको SLF4J द्वारा प्रदान किए गए मार्कर एपीआई का उपयोग करना होगा। क्या आपका मतलब है "कस्टम जावा कोड"?
सेकी

@Ceki लगता है कि सिर्फ Logger.warn (Marker, msg) का उपयोग करने से आपको कोई लाभ नहीं हुआ जब तक कि आपने फ़िल्टर के लिए कस्टम क्लास नहीं लिखी और उन्हें पंजीकृत नहीं किया ... Logback.xml के प्लेन सिंटैक्स में मार्कर (बस) के साथ काम करने की कोई विशेष क्षमता नहीं है उन्हें % मार्कर से प्रिंट करें )
गावेंको

1
Logback.qos.ch/manual/appenders.html#OnMarkerEvaluator पर जो प्रस्तुत किया गया है उसमें "विशेष" क्या मिलता है ?
सेकी

@Ceki बिंदु के लिए धन्यवाद! क्या यह केवल एक जगह है जहां मार्करों का उपयोग किया जा सकता है?
गावेंको

1
@ कैकी अब जब हम एलीटेसर्च का उपयोग कर रहे हैं तो यह विशेष घटनाओं को चिह्नित करने का तरीका है। हम पुन: उपयोग के लिए एक समर्पित वर्ग में पूर्वनिर्धारित मार्कर रखते हैं। यह स्पष्ट नहीं था जब आप केवल grepपाठ लॉग का उपयोग करते हैं।
गवेंको

जवाबों:


117

यह प्रश्न का एक उत्तर दिया गया संस्करण है " SLF4J / लॉगबैक में मार्कर का उपयोग करने के लिए सर्वोत्तम अभ्यास " सवाल ।

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

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

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

मार्करों के आगमन से पहले, समान व्यवहार को प्राप्त करने के लिए, आपके पास 1 विकल्प था) कस्टम स्तरों का उपयोग करके 2) संशोधित लकड़हारा नामों का उपयोग करें। SLF4J API वर्तमान में कस्टम स्तरों का समर्थन नहीं करता है। विकल्प 2 के लिए, प्रत्यय (या उपसर्ग) लकड़हारा नाम एक या दो लकड़हारे को संशोधित करने की आवश्यकता होने पर काम करने योग्य है। जैसे ही 3 या अधिक लॉगर को "सब-क्लास" करने के लिए दृष्टिकोण अव्यवहारिक हो जाता है, क्योंकि संबंधित कॉन्फ़िगरेशन फाइलें असहनीय हो जाती हैं।

भले ही एक एकल मार्कर पहले से ही बहुत उपयोगी हो सकता है, SLF4J का अगला संस्करण, अर्थात संस्करण 2.0, प्रति लॉग स्टेटमेंट में कई मार्करों की अनुमति देगा।


1
इसके अलावा SrimainAppender में discrimnator stackoverflow.com/a/30552012/1012497
nikli
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.