2016-07-05 12 views
5

हाय मेरे पास log4j लॉगर से संबंधित कोई प्रश्न है।log4j नियमित अभिव्यक्ति? [{}]

लॉगर टेक्स्ट का एक हिस्सा है जिसका मैं काफी पालन नहीं करता हूं। के रूप में

logger.debug("Some text goes here [{}] and some more text here", someObject.function()); 

मैं एक नज़र था इस प्रकार है, लेकिन मैं एक नियमित अभिव्यक्ति के रूप में इस खोजने के लिए नहीं कर पा रहे लाइन लग रहा है, यह दृढ़ता से बदबू आ रही है जैसे कि यह हालांकि हो सकता है और मुझे लगता है कि यह लौटे से बदल दिया जाएगा someObject.function() का मान% s को रखकर आउटपुट में स्ट्रिंग मानों को कैसे बदल सकता है। क्या मैं इस धारणा में सही होगा? यदि नहीं, तो कृपया यह बताएं कि यह क्या करता है।

उत्तर

3

यह एक रेगुलर एक्सप्रेशन नहीं है प्रतिस्थापित कर दिया जाएगा। {} वस्तुओं को मुद्रित करने के लिए एक विशेष वाक्यविन्यास है और जो स्ट्रिंग concatenation पर बेहतर है। उदाहरण के लिए,

logger.debug("{}, {}", o1, o2); // 2 objects will be printed 
logger.debug(o1 + ", " + o2); // the same in concatenation style 

मैं advantages of formatting with {} instead of string concatenation पढ़ने का सुझाव देता हूं।

मैं यह जोड़ना चाहता हूं कि अधिकांश लॉगिंग सिस्टम asynchronous logging parameterized messages का समर्थन करते हैं, इसका मतलब है कि आपको हमेशा एक वास्तविक मूल्य मिलेगा (यह concatenation द्वारा गारंटी नहीं देता है)।

+0

अतिरिक्त जानकारी के लिए धन्यवाद :) –

2

() someObject.function के मूल्य में {}

+2

धन्यवाद, संक्षिप्त और स्पष्ट उत्तर। –

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