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 출력을 어떻게 얻을 수 있습니까?