मैं एक logback विन्यास एक सीमा से फिल्टर के साथ एक appender है कि राशि के लिए एक लॉग स्तर remapping:logback एक विशिष्ट लकड़हारा
<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
...
</appender>
यह सुनिश्चित करता है कि केवल जानकारी और उच्च (चेतावनी दी है, त्रुटि) syslog में लॉग इन करने के । हालांकि, हमारे द्वारा उपयोग की जाने वाली तीसरी पार्टी लाइब्रेरी में से एक DEBUG पर एक विशेष ईवेंट लॉगिंग कर रहा है, और मैं इस कार्यक्रम को syslog पर लॉग करना चाहता हूं। मेरे मन में पहला दृष्टिकोण था लॉगजर में लॉग स्तर को रीमेप करने का प्रयास करना, लेकिन यह सुनिश्चित नहीं है कि यह संभव है या नहीं? कुछ ऐसा:
<logger name="akka.some.Thing" level="DEBUG" logAs="INFO">
<appender-ref ref="SYSLOG" />
</logger>
जाहिर है, "logAs" पैरामीटर मौजूद नहीं है, इसलिए मैं ऐसा नहीं कर सकता। Akka.some लॉगिंग करने का सबसे अच्छा तरीका क्या होगा। अन्य लॉगर्स के लिए फ़िल्टर को छोड़ते समय SYSLOG एपेंडर को लेकर?
दूसरा दृष्टिकोण एक दूसरा एपेंडर बनाना होगा जिसे SYSLOG2 कहा जाता है जिसमें फ़िल्टर नहीं होता है और इसका उपयोग करने के लिए विशिष्ट लॉगर सेट किया जाता है, लेकिन यह सोच रहा था कि केवल 1 SYSLOG एपेंडर के साथ लॉगबैक कॉन्फ़िगर करने का कोई तरीका है या नहीं ...
धन्यवाद,
आपके पास थ्रेसहोल्ड फ़िल्टर क्यों है? क्या आपके अन्य "लॉगर" कॉन्फ़िगरेशन इस ऐपेंडर को INFO से अधिक स्तर भेज रहे हैं? यदि हां, तो क्यों? –
हां, हम 2 स्थानों पर लॉग इन करते हैं। syslog एपेंडर लाइसेंसिंग स्थिरांक वाले इंडेक्सर में समाप्त होता है, इसलिए हम कभी भी INFO से कम कुछ भी लॉग नहीं करना चाहते हैं। हालांकि जब हम डीबग करना चाहते हैं तो हम डिबगिंग सक्षम करते हैं और यह फ़ाइल एपेंडर (सिसॉग में सभी डीबग गंक के बिना) पर जाता है। – Brett
दिलचस्प। यदि आपका पर्यावरण अनुमति देता है, तो सबसे आसान आपके छोटे फ़िल्टर को लिखना होगा जो कुछ भी लाइसेंस दे रहा था। अन्यथा, अधिक जटिल फ़िल्टर में से एक - जो अभिव्यक्तियों की अनुमति देता है - काम कर सकता है, लेकिन दूसरा एपेंडर शायद समझने और बनाए रखने में आसान होगा। –