java - 将进程的输出写入 log4j

标签 java process log4j

我使用 ProcessBuilder 启动一个进程,并希望将输出写入 log4j。我怎样才能做到这一点?

我知道我可以将进程的输出重定向到一个文件,然后读回该文件,但我希望有一些更简单的方法。

如果有更简单的解决方案,我想避免编写自己的 OutputStream 实现。我希望我不是第一个想要将 ProcessBuilder 的输出作为像

 List<String> 

或者其他容易处理的东西。

最佳答案

您可以使用 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())));

如果是长时间运行,偶尔提供输出的进程,那么最好把最后一行放在单独的线程中。

关于java - 将进程的输出写入 log4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35628423/

相关文章:

java - 嵌套 ArrayList 到单维

c - c中的 fork 和管道过程

java - Log4j XML 配置调试级别问题

java - 不同的日志位置取决于操作系统

log4j - snmp4j在log4j中配置BasicConfigurator时activemq中的Stackoverflow

java - 调用 setDefaultHostnameVerifier 后出现 SSLHandshakeException,禁用 SSL 验证

java - 使用 Junit 重新运行失败的测试

java - 加速 hibernate 初始化

linux - 我怎样才能找出这些文件或进程的作用 (linux)

c# - 使用 C# 的代码编译器接口(interface)