2008-11-12 16 views
7

क्या लॉग 4j लॉगिंग ईवेंट को लॉग फ़ाइल में लिखने का कोई तरीका है जो अन्य अनुप्रयोगों द्वारा भी लिखा जा रहा है। अन्य अनुप्रयोग गैर-जावा अनुप्रयोग हो सकते हैं। क्या कमी है? मुद्दों को लॉक करना? प्रारूपण?Log4j एक साझा लॉग फ़ाइल में लॉगिंग

उत्तर

9

लॉग 4j में सॉकेट ऐपेंडर है, जो एक सेवा में ईवेंट भेज देगा, जिसे आप स्वयं लागू कर सकते हैं या Log4j के साथ बंडल किए गए सरल कार्यान्वयन का उपयोग कर सकते हैं।

यह syslogd और Windows इवेंट लॉग का भी समर्थन करता है, जो गैर-जावा अनुप्रयोगों से ईवेंट के साथ आपके लॉग आउटपुट को एकीकृत करने का प्रयास करने में उपयोगी हो सकता है।

यदि प्रदर्शन एक मुद्दा है, तो आप विभिन्न लॉगिंग अनुप्रयोगों के बीच एक सतत लॉकिंग रणनीति को समन्वयित करने की कोशिश करने के बजाय लॉग फ़ाइल लिखना चाहते हैं।

1

आपकी सर्वश्रेष्ठ शर्त प्रत्येक एप्लिकेशन को अलग से लॉग इन करने दे सकती है, फिर समय पर आधारित फाइलों को 'जिपर' पर रखकर निर्धारित करें। यदि आपको पूर्ण लॉग तक वास्तव में अद्यतित पहुंच की आवश्यकता है, तो आप इसे हर घंटे चला सकते हैं।

-1

लॉग 4j इतना लचीला है कि आप एक प्रारूप में लॉग प्रविष्टियां बना सकते हैं जो पहले से ही फ़ाइल में रिकॉर्ड के साथ संगत है। विशिष्ट डेटा फ़ील्ड को प्रारूपित करने के लिए बस परिशिष्टों को देखें।

आपकी मुख्य चिंता लॉकिंग के साथ होगी, अधिकतर अन्य अनुप्रयोगों द्वारा संभवतः। सुनिश्चित करें कि सभी अनुप्रयोगों में फ़ाइल पर एक विशेष लॉक नहीं है और आपको ठीक होना चाहिए।

1

मैं निम्नलिखित दो दृष्टिकोण के साथ एक अनुभव है: सादा पाठ फ़ाइल के बजाय प्रवेश करने के लिए

  1. उपयोग डेटाबेस - यह प्रदर्शन के मुद्दों की वजह से निषेधात्मक हो सकता है, दूसरी ओर यह लॉग का विश्लेषण करने के लिए बहुत आसान है , रिपोर्ट बनाएं। डाटाबेस सभी समवर्ती समस्याओं का ख्याल रखता है।
  2. अन्य दृष्टिकोण में जेबॉस सर्वर का उपयोग शामिल है, जिसका उपयोग अन्य स्रोतों से लॉगिंग जानकारी पढ़ने के लिए किया जा सकता है। जेबॉस को न्यूनतम कॉन्फ़िगरेशन में चलाया जा सकता है और धन्यवाद कि यह वास्तव में हल्का है (2 सेकंड स्टार्टअप समय)। विवरण यहां http://docs.jboss.org/process-guide/en/html/logging.html (एक अलग सर्वर पर लॉग इन) पाया जा सकता है। Log4J सभी लॉकिंग/समवर्ती मुद्दों का ख्याल रखता है।

यदि आप जेबॉस का उपयोग करने की योजना नहीं बना रहे हैं तो आप अपने स्वयं के लॉगिंग समाधान के आधार के रूप में दूसरे दृष्टिकोण का उपयोग कर सकते हैं।

0

मुझे नहीं लगता कि डिफ़ॉल्ट log4j appenders कोई फ़ाइल लॉकिंग या सिंक्रनाइज़ेशन करते हैं। इस तरह के लॉकिंग के बिना, आप लॉग संदेश खोने या उन्हें उलझाने की संभावना है।

मुझे यकीन है कि कितना आसान है जावा में ताला लगा फ़ाइल करने के लिए है, लेकिन यह काम सीधे बनाने के लिए है, मुझे लगता है कि आप उचित appender उपवर्ग और प्रवेश विधि ओवरराइड करने के लिए की आवश्यकता होगी, तुल्यकालन कोड है कि ताले के साथ लपेटकर नहीं कर रहा हूँ और फ़ाइल को खोलता है। आपके सिस्टम लोड के आधार पर इसमें प्रदर्शन प्रभाव हो सकते हैं।

लॉग 4perl में एक सिंक्रनाइज़िंग एपेंडर है, लॉग :: लॉग 4perl :: Appender :: सिंक्रनाइज़ किया गया है, जो एक एपेंडर को लपेटता है और इसे पूरा करता है, और यह भी अपने लॉग :: Log4perl :: Appender :: फ़ाइल में ध्वज प्रदान करता है जो रोकता है interleaved लाइनें। आप देख सकते हैं कि यह देखने के लिए कि क्या यह जावा में प्रतिकृति हो सकता है।

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