में डुप्लिकेट संदेशों को दबाने के लिए कैसे करें मैं जावा और log4j2 के लिए काफी नया हूं, इसलिए शायद अजीब प्रश्न के लिए खेद है। मेरी समस्या निम्नलिखित है। मैंने एक एप्लीकेशन लिखा जो लॉगिंग के लिए log4j2 का उपयोग करता है। कार्यक्रम डेटा का विश्लेषण करता है और मामले में एक चेतावनी लिखता है क्योंकि दिए गए स्ट्रिंग को वांछित के रूप में पार्स नहीं किया जा सका। कभी-कभी प्रोग्राम को बहुत अप्रत्याशित तार मिलते हैं और इस प्रकार यह एक ही त्रुटि संदेश के सभी समय लॉग करता है। तो, सवाल यह है कि, एक ही त्रुटि संदेश को बार-बार लॉग इन करने से कैसे बचें। उदाहरण के लिए लॉगफाइल में 2000 बार एक ही त्रुटि संदेश देखने के लिए, मैं लॉगफाइल में एक संकेत देना चाहता हूं कि यह त्रुटि संदेश x-times लिखा गया था। मेरे वर्तमान log4j2 कॉन्फ़िग फ़ाइल नज़र इस प्रकार है:log4j2
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="pattern">%d{DEFAULT} %-5p %-18.18c %4.4L [%-15.15t] %m%n</Property>
</Properties>
<Appenders>
<Console name="STDERR" target="SYSTEM_ERR">
<PatternLayout pattern="${pattern}" />
</Console>
</Appenders>
<Loggers>
<Root level="warn">
<AppenderRef ref="STDERR" />
</Root>
</Loggers>
</Configuration>
वास्तव में यह मतलब हो सकता है बल्कि एक सामान्य AppenderWrapper अपने वास्तविक appender को सौंपने के लिए। इसलिए यदि आप अब कंसोल एपेंडर को पसंद नहीं करते हैं तो आप आसानी से एपेंडर्स को आसानी से स्विच कर सकते हैं। – philnate
आप फ़िल्टर का उपयोग कर एक ही चीज़ प्राप्त कर सकते हैं। घटनाओं के खिलाफ मिलान करने के लिए फ़िल्टर को कई पैटर्न के साथ आपूर्ति की जा सकती है। यदि फ़िल्टर पैटर्न से मेल खाता है, तो यह इसे एक मेमोरी स्टोरेज में खिलाता है और ईवेंट को प्रचार से रोकता है। इन-मेमोरी-स्टोरेज बीन में आपके एग्रीगेशन को लॉग इन करने के लिए केवल सादे पुराने लॉग का उपयोग करके एक कार्यकर्ता हो सकता है (बंद होने पर छल लिखना सुनिश्चित करें)।इस तरह आप बस अपने सभी एग्रीगेटर्स का पुनः उपयोग कर सकते हैं और फ़िल्टर को काम को डॉट कर सकते हैं। – pandaadb