2012-02-25 11 views
6

मैं लॉगबैक/एसएलएफ 4 जे का उपयोग करके "सुंदर मुद्रित" एक्सएमएल लॉग करना चाहता हूं। अभी, लॉग में जो मिलता है वह पूरी तरह से पढ़ा जा सकता है और मुझे इसे पार्स करने के लिए कुछ खोलना है। मैं मानव पढ़ने योग्य तरीके से XML आउटपुट करने के लिए डीबग के लिए लॉगिंग कॉन्फ़िगर करने में सक्षम होना चाहता हूं (क्योंकि मैं केवल डीबग में एक्सएमएल देखना चाहता हूं)।लॉगबैक/एसएलएफ 4 जे में मल्टीलाइन टेक्स्ट कैसे लॉग करें?

क्या यह संभव है?

उत्तर

9

आप लॉग बयान में एक नई पंक्ति \n जोड़ें:

log.info("Message id: {}\nContents: {}", id, xml); 

अद्यतन: आदेश में सुंदर प्रिंट एक्सएमएल करने पर एक नजर है: How to pretty print XML from Java?। ध्यान में रखना एक बात है, अगर एक्सएमएल वास्तव में मुद्रित नहीं होने जा रहा है तो महंगा स्वरूपण करने की कोई आवश्यकता नहीं है। इसलिए इस दुर्लभ मामलों में जहां is*Enabled() इस्तेमाल किया जाना चाहिए में से एक है:

if(log.isInfoEnabled()) 
    log.info("Message: {}", prettyFormat(xml)); 
+0

खैर यह केवल 2 लाइनों का निर्माण करेगा। आईडी के साथ एक और एक्सएमएल के साथ अन्य। यह वास्तव में एक सुंदर प्रिंट नहीं है ;-) – Krystian

+0

@ क्रिस्टियन: क्षमा करें, मैंने आपको गलत समझा। मेरे अद्यतन उत्तर पर एक नज़र डालें। –

+0

उह .. मैंने एक घातक गलती की है। मुझे पता था कि प्रतिक्रिया में मुझे एक बहुत ही मुद्रित एक्सएमएल मिलता है, हालांकि ऐसा लगता है कि प्रतिक्रिया प्राप्त करने वाला पाठक सभी नए अक्षरों को हटा रहा था। यह वास्तव में समस्या लॉगिंग नहीं कर रहा था। एक बार जब मैंने लॉगर को मूल प्रतिक्रिया पास करने के लिए कोड बदल दिया है तो सब ठीक काम करने लगे। मैंने आपके उत्तर को सही के रूप में चिह्नित किया है क्योंकि उन लोगों के लिए जो कच्चे एक्सएमएल प्राप्त करते हैं, यह ठीक काम करेगा। धन्यवाद। – Krystian

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