2011-08-06 7 views
6

मैं जावा के लिए एक अच्छा छोटा वेब अनुरोध ढांचा भर गया: Spark। एपीआई अच्छा और वादा करता है, लेकिन पुस्तकालय बंडल खुद ही अजीब है। अकेले इस तथ्य को छोड़ दें कि यह स्नैपशॉट कलाकृतियों को निर्भरताओं के रूप में उपयोग करने का प्रस्ताव करता है। अकेले छोड़ दो तथ्य यह लॉगिंग के लिए log4j का उपयोग करता है (पुस्तकालय आजकल jcl या slf4j का उपयोग करते हैं), और System.out.println कभी-कभी। लेकिन यह spark-xxx.jar में अपनी खुद की log4j.properties bundles। यह जांचने में मुझे एक घंटा लगा कि मेरा प्रोजेक्ट log4j कॉन्फ़िगरेशन की शिकायत क्यों करेगा जब log4j.properties निश्चित रूप से मेरे क्लासपाथ में मौजूद है। -Dlog4j.debug = सच ने जवाब दिया, log4j ने कबूल किया कि उसने स्पार्क जार से log4j.properties लोड किया था।लाइब्रेरी में log4j.properties बंडल करना - खराब शैली या क्या?

मुझे आश्चर्य है कि यह (लाइब्रेरी होने और log4j और bundling log4j.properties का उपयोग करके) कुछ प्रेरणा है, या यदि यह सिर्फ लंगड़ा है।

+0

यह इस प्रश्न के लिए उचित मंच नहीं हो सकता है: यदि कोई प्रेरणा है तो पुस्तकालय के लेखकों के साथ यह अधिक उचित ढंग से मिलता है। –

उत्तर

5

लाइब्रेरी के साथ log4j.properties को बंडल करना खराब शैली है।

स्पार्क के साथ आप तर्क दे सकते हैं कि यह एक ऐप सर्वर (टॉमकैट की तरह) के करीब है, जिस स्थिति में यह लॉगिंग कॉन्फ़िगर कर सकता है।

मैं कहूंगा कि परीक्षण यह है कि जो भी प्रारंभ (.sh | .bat) स्क्रिप्ट को नियंत्रित करता है उसे लॉगिंग कॉन्फ़िगर करना चाहिए, और log4j कॉन्फ़िगरेशन फ़ाइलों को लगभग जार में कभी नहीं होना चाहिए।

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