2011-03-31 11 views
8

का उपयोग करके फ़ाइलें लॉग इन करने के फ़ाइल लॉग इन करने की प्रक्रिया उत्पादन & त्रुटि धारा लिखने के लिए एक अच्छा उदाहरण मिलता है। मैं अपनी प्रक्रिया निष्पादित करने के लिए अपाचे-कॉमन्स निष्पादन लाइब्रेरी का उपयोग करता हूं। एक कोड नमूना के बाद यह प्रदर्शित करने के लिए किलेखन आउटपुट और त्रुटि मैं थोड़ी देर के लिए खोज रहे होते PumpStreamHandler

public static int executeCommand(CommandLine command, Logger log) throws ExecuteException, IOException { 
    DefaultExecutor executor = new DefaultExecutor(); 
    executor.setExitValue(0); 

    PumpStreamHandler psh = new PumpStreamHandler(); 
    executor.setStreamHandler(psh); 

    return executor.execute(command); 
} 

उत्तर

14

यह प्राप्त करने के लिए कोड निम्नलिखित है।

class ExecLogHandler extends LogOutputStream { 
    private Logger log; 

    public ExecLogHandler(Logger log, Level logLevel) { 
     super(logLevel.toInt()); 
     this.log = log; 
    } 

    @Override 
    protected void processLine(String line, int logLevel) { 
     log.log(Level.toLevel(logLevel), line); 
    } 
} 

इस प्रकार हम उपरोक्त वर्ग का उपयोग कर सकते हैं।

public static int executeCommand(CommandLine command, Logger log) throws ExecuteException, IOException { 
    DefaultExecutor executor = new DefaultExecutor(); 
    executor.setExitValue(0); 

    PumpStreamHandler psh = new PumpStreamHandler(new ExecLogHandler(log, Level.DEBUG), new ExecLogHandler(log, Level.ERROR)); 
    executor.setStreamHandler(psh); 

    return executor.execute(command); 
} 

अपाचे-कॉमन्स कार्यकारी का उपयोग करते हुए इस कोड & जीवन (एक प्रोग्रामर की) बहुत आसान बना देता है की तरह। मैं कमांडलाइन कमांड निष्पादित करने के लिए Runtime.exec का उपयोग करने वाले कोड की एक बड़ी मात्रा को त्यागने में सक्षम था।

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