मैं Log4J के साथ जावा 1.4 का उपयोग कर रहा हूं।क्या लॉग 4 जे लॉगर को क्षणिक घोषित किया जाना चाहिए?
मेरे कुछ कोड में मूल्य वस्तुएं (पीओजेओ) को क्रमबद्ध और deserializing शामिल है।
मेरी POJOs केप्रत्येक
private final Logger log = Logger.getLogger(getClass());
के साथ एक लकड़हारा serializer की org.apache.log4j.Logger Serializable नहीं किया जा रहा शिकायत की घोषणा की।
मैं
private final transient Logger log = Logger.getLogger(getClass());
बजाय उपयोग करना चाहिए?
कुछ प्रश्न जो आप अपने आप से पूछ सकते हैं और अपने प्रश्न में संपादित के रूप में जोड़ सकते हैं। इसे क्षणिक बनाने के लिए और आपके विचार क्या हैं? क्षणिक मतलब क्या है? – svrist
मुझे उल्लेख करना चाहिए था, मुझे प्रत्येक वर्ग के लिए प्रत्येक उदाहरण के लिए लॉगर रखने का विचार पसंद है। मेरे पास एक ही कक्षा के तत्काल और प्रबंधित किए गए एक ही वर्ग के कई उदाहरण होंगे (एक स्प्रिंग एप्लिकेशन संदर्भ कहें) और प्रति-वर्ग आधार के बजाय प्रति-बीन आधार पर लॉगिंग स्तर स्विच करना चाहते हैं। स्प्रिंग एप्लिकेशन संदर्भ के उदाहरण में, लॉगर को निजी अंतिम क्षणिक लॉगर लॉग = Logger.getLogger (getBeanName()) के रूप में घोषित किया जाएगा; जहां बीन अब पीओजेओ नहीं है और बीननामएवेयर – Vihung
लागू करता है [एसएलएफ 4 जे एफएक्यू] (http://www.slf4j.org/faq.html#declared_static): * "क्या किसी वर्ग के लॉगर सदस्यों को घोषित किया जाना चाहिए स्थैतिक? [...] संक्षेप में, स्थिर चर के रूप में लॉगर सदस्यों को घोषित करने के लिए कम CPU समय की आवश्यकता होती है और थोड़ा छोटी स्मृति पदचिह्न की आवश्यकता होती है। [...] हालांकि, आवृत्ति चर प्रत्येक एप्लिकेशन के लिए एक अलग लॉगर वातावरण बनाना संभव बनाता है, यहां तक कि साझा पुस्तकालयों में घोषित लॉगर्स के लिए भी। शायद पहले उल्लिखित विचारों की तुलना में अधिक महत्वपूर्ण, आवृत्ति चर आईओसी-अनुकूल हैं जबकि स्थिर चर नहीं हैं। "* – Arjan