जावा लॉगिंग बनाम लॉग 4 जे [बंद]


134

क्या यह अभी भी लॉग 4j लाइब्रेरी को जावा 5 प्रोजेक्ट में जोड़ने के लिए है बस लॉग इन करने के लिए कुछ अच्छा रोलओवर सेटिंग्स के साथ एक फ़ाइल के लिए कुछ अपवादों को कहने दें। या मानक का उपयोग करेगा। सुविधा के रूप में अच्छी तरह से काम करेंगे?

तुम क्या सोचते हो?


कई लॉग 4j 1.2 लॉकिंग मुद्दों पर विचार करने के लिए stackoverflow.com/a/13144054/603516 देखें ।
वडज़िम

जवाबों:


115

मैं कहता हूँ कि आप शायद आपके द्वारा वर्णित आवश्यकताओं के लिए use.log के साथ ठीक हैं।

एक अच्छे निर्णय वृक्ष के लिए, Log4j बनाम java.util.log पर एक नज़र डालें

प्रश्न एक: क्या आप किसी ऐसे चतुर हैंडलर की आवश्यकता का अनुमान लगाते हैं जो Log4j के पास है, जो कि JUL के पास नहीं है, जैसे SMTPHandler, NTEventLogHandler या कोई भी बहुत सुविधाजनक FileHandler?

प्रश्न दो: क्या आप अपने आप को अपने लॉगिंग आउटपुट के प्रारूप को बार-बार बदलना चाहते हैं? क्या आपको ऐसा करने के लिए एक आसान, लचीला तरीका चाहिए होगा? दूसरे शब्दों में, क्या आपको Log4j के PatternLayout की आवश्यकता है?

प्रश्न तीन: क्या आप अपने अनुप्रयोगों में जटिल लॉगिंग कॉन्फ़िगरेशन को बदलने की क्षमता के लिए एक निश्चित आवश्यकता का अनुमान लगाते हैं, जिसके बाद उन्हें उत्पादन वातावरण में संकलित और तैनात किया जाता है? क्या आपका कॉन्फ़िगरेशन कुछ इस तरह से ध्वनि करता है, "इस वर्ग के गंभीर संदेश ई-मेल के माध्यम से समर्थन आदमी को भेजे जाते हैं; कक्षाओं के सबसेट से गंभीर संदेश हमारे सर्वर पर एक syslog deamon में लॉग इन हो जाते हैं; कक्षाओं के दूसरे सबसेट से चेतावनी संदेश लॉग हो जाते हैं। नेटवर्क ड्राइव ए पर एक फ़ाइल के लिए? और फिर सभी जगह से सभी संदेश नेटवर्क ड्राइव बी पर एक फ़ाइल में लॉग इन हो जाते हैं? और क्या आप अपने आप को हर दो दिनों में इसे देखते हैं?

यदि आप उपरोक्त किसी भी प्रश्न का उत्तर हां में दे सकते हैं, तो Log4j के साथ जाएं। यदि आप उन सभी के लिए एक निश्चित संख्या का जवाब देते हैं, तो JUL पर्याप्त से अधिक होगा और यह एसडीके में पहले से ही आसानी से शामिल है।

उस ने कहा, इन दिनों बहुत ज्यादा हर प्रोजेक्ट लगता है कि log4j सहित, अगर केवल कुछ अन्य लाइब्रेरी इसका उपयोग करती है


1
महान प्रश्नावली आधारित उत्तर। जरूरतों के आधार पर प्रत्येक को अपना
होपकिंग

43

मेरा सुझाव है कि आप जावा (SLF4J) के लिए सरल लॉगिंग मुखौटा का उपयोग करें । यह विभिन्न प्रदाताओं का समर्थन करता है जिसमें Log4J शामिल है और इसे Apache Commons Logging के प्रतिस्थापन के रूप में उपयोग किया जा सकता है।


6
कॉमन्स लॉगिंग में क्या गलत है?
बार्ट वैन ह्युकेलोम

5
@ बर्ट वैन ह्युकेलोम और टिप्पणी upvoters - लेख
स्टीफन सी

4
@ स्टीफन सी: जानकारी के लिए धन्यवाद, हालांकि मैंने सीखा है कि कुछ समय पहले और अब मैं जब भी SLF4J का उपयोग कर रहा हूं। (मेरी टिप्पणी एक वास्तविक प्रश्न btw था, रूढ़िवादी टिप्पणी नहीं)
बार्ट वैन ह्युकेलोम

1
@ बर्ट, कॉमन्स लॉगिंग उपयोग करने के लिए पैकेज की गतिशील खोज का उपयोग करते हैं। SLF4J उपयोग (या उपयोग किया जाता है) को बैकेंड में कक्षाओं को लोड करने की आवश्यकता होती है।
थोरबजोरन रावन एंडरसन

21

Log4j एक लंबे समय के लिए चारों ओर रहा है, और यह बहुत अच्छी तरह से काम करता है। मेरे पास इसे वापस करने के लिए कोई वैज्ञानिक अध्ययन नहीं है, लेकिन मैंने बड़ी संख्या में ग्राहकों को जो देखा है, उसके आधार पर, यह आसानी से लॉगिंग फ्रेमवर्क है जिसे मैं किसी भी अन्य की तुलना में अधिक उपयोग करता हूं। यह एक लंबे समय के लिए रहा है, और अगले बिग लॉगिंग फ्रेमवर्क द्वारा प्रतिस्थापित नहीं किया गया है, जो कुछ कहता है।

यह स्थापित करने के लिए सरल मृत है, और मूल एपेंडर्स (आउटपुट) सीखना आसान है। वहाँ एक पूरे मेजबान परिशिष्ट उपलब्ध हैं, जिनमें शामिल हैं:

  1. ConsoleAppender
  2. DailyRollingFileAppender
  3. ExternallyRolledFileAppender
  4. FileAppender
  5. JDBCAppender
  6. JMSAppender
  7. NTEventLogAppender
  8. RollingFileAppender
  9. SMTPAppender
  10. SocketAppender
  11. SyslogAppender
  12. TelnetAppender
  13. WriterAppender

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

एक नोट, मुझे क्लास लोडर समस्याओं की एक श्रृंखला थी जब मैंने लॉग 4 जे के अलावा एपाचे कॉमन लॉगिंग का उपयोग किया था। यह केवल एक विशिष्ट अनुप्रयोग के लिए था, लेकिन मुझे कॉमन लॉगिंग जैसी अमूर्त परत का उपयोग करते समय लचीलेपन की पेशकश करने के बजाय अकेले log4j का उपयोग करना आसान लगा।

अधिक जानकारी के लिए यह लेख देखें :

सौभाग्य!


17

java.util.log अतिरिक्त सामान के बिना एक व्यापक लॉगिंग पैकेज प्रदान करता है जो कुछ अन्य प्रदान करते हैं।


5
इसके अलावा, यह डिफ़ॉल्ट रूप से शामिल है और जावा द्वारा ही उपयोग किया जाता है (इसलिए आपके पास यह वैसे भी होगा!)
है QUIT - Anony-Mousse

7

log4j कुल मिलाकर एक बहुत अच्छा पैकेज है, और इसमें कुछ हिचकी नहीं है जो java.util.log शामिल हैं। मैं दूसरा उपयोग करूंगा कि लॉगऑनज का उपयोग करने की तुलना में सीधे लॉग 4 जे का उपयोग करना आसान है।


3
क्या आप कृपया java.util.log की हिचकी के बारे में अधिक विशिष्ट हो सकते हैं?
अल्केर

बेशक, सिंक्रनाइज़ तरीकों प्रवेश करने में भूमि के ऊपर की तरह: देखने github.com/playframework/playframework/issues/6958 और bugs.openjdk.java.net/browse/JDK-8077846
विल सार्जेंट

4

मैं अपाचे कॉमन्स लॉगिंग को आपके लॉगिंग इंटरफ़ेस के रूप में उपयोग करने की सलाह देता हूं । इस तरह आपके पास लॉगिंग कार्यान्वयन को कभी भी बंद करने का लचीलापन है, आप अपने अंत में किसी भी कोड परिवर्तन की आवश्यकता के बिना।


3

मैं log4j के साथ जाऊंगा। Log4j के साथ possibilites अप्रचलित नहीं है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.