0
閱讀我有在我開始另一個進程,並試圖登錄的所有標準輸出和標準錯誤SLF4J一些非常簡單的Java代碼。輸出停止從我的過程
this.service.serverProcess = Runtime.getRuntime().exec(arguments);
this.service.serverIsRunning = true;
BufferedReader serverStdout = new BufferedReader(new InputStreamReader(
this.service.serverProcess.getInputStream()), 16);
BufferedReader serverStderr = new BufferedReader(new InputStreamReader(
this.service.serverProcess.getErrorStream()), 16);
String stdoutLine = null;
String stderrLine = null;
while ((stdoutLine = serverStdout.readLine()) != null ||
((stderrLine = serverStderr.readLine()) != null)) {
if (stdoutLine != null && stdoutLine.trim().length() > 0)
logger.info("{}", stdoutLine);
if (stderrLine != null && stderrLine.trim().length() > 0)
logger.error("{}", stderrLine);
}
try { this.service.serverProcess.waitFor(); } catch (InterruptedException e) {};
this.service.serverIsRunning = false;
不幸的是,我只得到輸出從我的過程中的第一行,我從來沒有看到任何比這更多的產出,但我敢肯定,還有更多的輸出比我所看到的。
什麼錯嗎?我希望它在事件發生後立即登錄,因爲輸出對於我保留的日誌很重要。如何獲得我的流程的STDOUT和STDERR的完整輸出?