Use Java’s ProcessBuilder to track error output of external programs
java.lang.ProcessBuilder allows a developer to redirect the stderr and stdout of an external program to the logger. Here’s some code to show how to do that:
String[] args = executionCmd.split(" "); ProcessBuilder procbuilder = new ProcessBuilder(args); procbuilder.directory(new File("My working dir")); procbuilder.command(args); procbuilder.redirectErrorStream(true); Process proc = procbuilder.start(); if(isHangedProcess()) { BufferedInputStream inpstream = new BufferedInputStream(proc.getInputStream()); BufferedReader br = new BufferedReader(new InputStreamReader(inpstream)); String line; while ((line = br.readLine()) != null) { log.error(line); } proc.destroy(); } else if(proc.waitFor() != 0) { log.error("process failed with error code: " + proc.exitValue()); }