JF *_*ier 5 java log4j process
我使用 ProcessBuilder 启动一个进程,并希望将输出写入 log4j。我怎样才能实现这个目标?
我知道我可以将进程的输出重定向到一个文件,然后读回该文件,但我希望有一些更简单的方法。
如果有更简单的解决方案,我想避免编写自己的 OutputStream 实现。我希望我不是第一个想要将 ProcessBuilder 的输出作为“好的 java 对象”(如
List<String>
Run Code Online (Sandbox Code Playgroud)
或者其他容易处理的东西。
您可以使用Process.getInputStream()和/或Process.getErrorStream()检索输出并将其写入 log4j。例如:
private static final Logger LOG = Logger.getLogger(MyClass.class);
....
ProcessBuilder pBuilder = new ProcessBuilder("MyProcess").redirectErrorStream(true);
Process process = pBuilder.start();
LOG.info(new String(IOUtils.toByteArray(process.getInputStream())));
Run Code Online (Sandbox Code Playgroud)
如果它是一个运行很长时间并且偶尔提供输出的进程,那么最好将最后一行放在单独的线程中。
| 归档时间: |
|
| 查看次数: |
4958 次 |
| 最近记录: |