मैं आउटपुट संदेशों में संकलन-समय निरंतर के रूप में __LINE__
को शामिल करने का एक तरीका खोज रहा हूं।__LINE__ समकक्ष?
विभिन्न समाधान मौजूद हैं, लेकिन __LINE__
in JS और __LINE__
in C# में सुझाए गए बड़े रनटाइम पेनल्टी के साथ। वे आम तौर पर रन 4j के रूप में रनटाइम ऑब्जेक्ट StackFrame
पर आधारित होते हैं।
आवश्यक आधार पर सक्षम/अक्षम करने की log4j संभावना का उपयोग करना एक विकल्प नहीं है, आमतौर पर जब कोई त्रुटि होती है, तो लाइन संख्या को सक्षम करने में बहुत देर हो चुकी है, और इनलाइन कोड में कोई लाइन नंबर नहीं लगता है और भी । यह संभव होगा करने के लिए या तो:
- पूर्व प्रक्रिया संकलन से पहले जावा स्रोत फ़ाइलें, ग्रहण के साथ एकीकृत कुछ के साथ आदर्श है, इसलिए यह भी developpement मंच पर परीक्षण किया जा सकता है।
- प्री-प्रोसेस लोडिंग समय पर कक्षा में सक्षम हो। उपरांत होने के बाद ओवरहेड नगण्य होगा।
1. असल में मैं प्रयोग करते हैं एक बदसूरत हैक: सिर्फ चींटी चाल
बस मेरी जिज्ञासा के लिए: आपको लॉग में लाइन नंबर की आवश्यकता क्यों है? जब कोई त्रुटि होती है, तो आपके पास पूर्ण स्टैकट्रैक होता है, जो लाइन नंबर इंगित करता है ... – romaintaz
कभी-कभी अपवाद में, लाइन नंबर के बजाय मेरे पास 'Util.java (इनलाइन संकलित कोड)' जैसा कुछ है। और कभी-कभी मेरे पास कोई अपवाद नहीं है, केवल लॉगिंग जानकारी: "यहां रहें", "यहां रहें", मैं अद्वितीय संदेश रखने से परेशान नहीं होना चाहता था (लाइन नंबर उन्हें वैसे भी अनूठा बनाता है) –
JVM सक्षम होना चाहिए उस स्थिति को संभालें। जावा का आप किस संस्करण का उपयोग करते हैं? –