SLF4J के साथ प्लेसहोल्डर्स के साथ अपवाद और संदेश कैसे लॉग करें


85

SLF4J का उपयोग करके त्रुटि संदेश और अपवाद दोनों को लॉग करने के लिए सही तरीका क्या है ?

मैंने ऐसा करने की कोशिश की है, लेकिन अपवाद स्टैक ट्रेस कभी मुद्रित नहीं होता है:

logger.error("Unable to parse data {}", inputMessage, e);

इस मामले में मैं अपवाद स्टैकट्रेस को लॉग आउट करने के {}साथ-साथ आबाद करना चाहता हूं inputMessage

ऐसा करने का एकमात्र तरीका मुझे यह करना होगा:

logger.error("Unable to parse data " + inputMessage, e);

जो सुंदर नहीं है।


आपकी मुट्ठी logger.error लाइन slf4j संस्करण 1.7.25 में चाहते हैं के रूप में काम करता है।
kiml42

जवाबों:


131

SLF4J संस्करण 1.6 के रूप में, SLF4J अंतिम पैरामीटर की व्याख्या करेगा जैसा कि आपने इरादा किया था, अर्थात अपवाद के रूप में। आपको SLF4J API के पुराने संस्करण का उपयोग करना चाहिए।


7
क्या यह जावदोक में वर्णित है? मैं यहां ऐसी ही जानकारी पाने की उम्मीद कर रहा था: slf4j.org/apidocs/org/slf4j/Logger.html
स्कॉट 23

2
मुझे विश्वास है, लेकिन @ @ की तरह, मुझे उम्मीद थी कि इस व्यवहार को प्रलेखित किया जाएगा।
Stephan

4
स्कॉच, @ स्टेफ़न - औचित्यपूर्ण व्यवहार यहाँ उनके FAQ में प्रलेखित प्रतीत होता है
प्रियादु नीमरे

8
यह एक सबसे अच्छा रखा रहस्य की तरह है। इस पर ध्यान दिलाने के लिए धन्यवाद। मेरा अनुवर्ती सवाल यह है कि वे इस तथ्य को क्यों छिपाएंगे कि यह एक var-arg में संभव है? वे एक नया अतिभारित तरीका क्यों नहीं बना सकते हैं जो Throwableइसके बाद एक var-arg लेता है? क्या इरेज़र की समस्या है? क्या अन्य पुस्तकालयों में यह मानक अंतिम तर्क के रूप में पारित किया गया है?
गाओगोंग

7
यह अक्सर पूछे जाने वाले प्रश्न (FAQ?) में दर्ज किया गया है: slf4j.org/faq.html#paramException । मैं इस बात से सहमत हूं कि इस सुविधा को अधिक स्पष्ट रूप से प्रलेखित किया जाना चाहिए।
Stephan202
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.