2015-01-06 19 views
5

संशोधित करें मैं System.out.println(); द्वारा मुद्रित आउटपुट को संशोधित करना चाहता हूं। यह कैसे संभव है? यह संभव है - मैंने इसे बुक्किट/क्राफ्टबुकिट में देखा है। यदि कोई प्लगइन System.out.println (स्ट्रिंग स्ट्रिंग) के साथ एक स्ट्रिंग प्रिंट कर रहा है; बुक्किट स्ट्रिंग में एक समय/तारीख और लॉगिंग स्थिति जोड़ता है। मैं बुक्किट की तरह ही करना चाहता हूं।System.out.println() में हुक; और

+0

आप अपने स्वयं के "प्रिंट" वर्ग को डिजाइन और कार्यान्वित करने और इसका उपयोग करने से बेहतर होंगे। – ErstwhileIII

+0

मेरे पास लॉग इन करने के लिए मेरा खुद का लॉगर क्लास है, लेकिन मेरा सॉफ़्टवेयर बकिकिट जैसा है। अन्य उपयोगकर्ता इसके लिए प्लगइन्स विकसित कर सकते हैं और जब प्लगइन println() विधि का उपयोग करता है तो इसमें उपसर्ग भी होना चाहिए। तो वे मेरे लॉगर का उपयोग कर सकते हैं लेकिन उन्हें इसका उपयोग करने की ज़रूरत नहीं है। – TrustedCreeper

उत्तर

12

आप PrintStream कि मानक आउटपुट के रूप में प्रयोग किया जाता है बदल सकते हैं:

System.setOut(PrintStream out)

अपनी खुद की PrintStream कार्यान्वयन जो प्रिंट जो कुछ अतिरिक्त जानकारी आप (पुराने) मानक आउटपुट करना चाहते बनाएँ, और सेट इसके साथ:

System.setOut(myStream); 

उदाहरण:

निम्न उदाहरण प्रिंट प्रत्येक मुद्रित String से पहले वर्तमान समय मिली सेकंड कि PrintStream.println(String x) विधि के साथ मुद्रित किया जाता है:

PrintStream myStream = new PrintStream(System.out) { 
    @Override 
    public void println(String x) { 
     super.println(System.currentTimeMillis() + ": " + x); 
    } 
}; 
System.setOut(myStream); 
System.out.println("Hello World!"); 

आउटपुट:

1420553422337: Hello World! 

नोट:

यह उदाहरण केवल ओवरराइड PrintStream.println(String x) विधि, इसलिएके अन्य प्रिंट विधियों को कॉल करनाआउटपुट में टाइम स्टैंप नहीं जोड़ पाएगा।

0
PrintStream print= new PrintStream(System.out) { 

    @Override 

    public void println(String yourString) { 

     super.println(System.currentTimeMillis()+ ": " + yourString); 

    } 

}; 

print.println("your String"); 
संबंधित मुद्दे