2016-06-20 12 views
11

क्या अपवाद समूह सुविधा के साथ कोई लॉगिंग समाधान है? मैं जो हासिल करना चाहता हूं वह तब होता है जब कुछ अपवाद लॉग होते हैं उदाहरण के लिए 10 सेकंड में 100 बार मैं 100 स्टैक निशान लॉग नहीं करना चाहता हूं। मैं RuntimeException was thrown 100 times: single stack trace here जैसे कुछ लॉग करना चाहता हूं। log4j के साथ कुछ एकीकृत होना सही होगा।जावा - लॉग इन में समान अपवाद समूह

ऑफ़क के अंदर अपवाद कतार के साथ कुछ लॉगिंग मुखौटा बनाने का विकल्प है लेकिन हो सकता है कि कुछ पहले ही लागू हो।

+1

बस एक विचार: आप विभिन्न धागे से प्रेरित अंतराल लॉग कैसे संभालेंगे? जैसे यदि एक थ्रेड एक्स को बड़ी संख्या में लॉग करता है और दूसरा धागा वाई को कई बार लॉग करता है, तो आप XYXYXYX वाई के साथ समाप्त हो सकते हैं। मुझे पिछले प्रोजेक्ट पर कुछ ऐसा करना था और तीसरे पक्ष के लॉगिंग फ्रेमवर्क समाधान नहीं थे (हमने अपने स्वयं के समूह तंत्र को कार्यान्वित किया ....) – xav

+0

@xav हां, वहां कुछ समेकन समस्याएं होंगी। मेरे मामले में समाधान अनुक्रमित अपवाद या इसी तरह के smth के साथ राज्य भंडारण के लिए लॉगिंग विधियों/concurrency संग्रह सिंक्रनाइज़ किया जा सकता है। तो एक्स वाई एक्स वाई एक्स वाई -> एक्सएक्स 3 वाईएक्स 3। क्या आप कृपया कुछ समूह बता सकते हैं कि आपके समूह तंत्र को कैसे कार्यान्वित किया गया था? – coolguy

+0

मैंने इस तरह की सहमति के बारे में बात नहीं की। * एक ही समय * पर लॉग इन करने वाले दो थ्रेड होने पर log4j के लिए ठीक होगा। आपके कोड में 'सिंक्रनाइज़' का उपयोग करने से इस मुद्दे के बारे में बात करने में मदद नहीं मिलेगी। मैंने इस तरह के मामले के बारे में बात की: एक थ्रेड TX एक्स को लॉग करता है, फिर दो सेकंड बाद, एक और धागा टीवाई वाई लॉग करता है, फिर दो सेकंड बाद, थ्रेड TX एक्स को लॉग करता है, फिर दो सेकंड बाद, थ्रेड टीवाई लॉग वाई, .... के रूप में नतीजतन, आपकी लॉग फ़ाइल में XYXYX वाई होगा ... (यदि आपके पास प्रति थ्रेड एक लॉग फ़ाइल है, जो अजीब होगा) – xav

उत्तर

1

कृपया इस ईमेल पते पर भेजने के लिए log handler implementation that groups logs पर एक नज़र डालें।

समाधान मूल रूप से log handler है जो स्मृति को लॉग सहेजने के लिए CyclicBuffer का उपयोग करता है। जब कोई सीमा पार हो जाती है या सिस्टम बंद हो जाता है, तो हैंडलर बफर को फहराता है।

समाधान JUL आधारित (java.util.logging) है, लेकिन यह आपके लिए कुछ संशोधन के साथ अपना लॉग 4j समाधान बनाने के आधार के रूप में आपकी सेवा कर सकता है। यह मेरे लिए अच्छा काम किया। आशा करता हूँ की ये काम करेगा।

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