我本质上是在做以下事情:
Process process = new ProcessBuilder().command( ... ).start();
InputStream stdout = process.getInputStream();
LoggerFactory.getLogger( this.class ).debug...?
有什么办法可以写InputStream
到记录器以便由我的日志记录设置管理?或者我应该采取另一种方法来捕获流程输出?
update:我重写了这个,因为我刚刚意识到我已经读过Process/ProcessBuilder
API错误以及那个getInputStream()
是标准输出
update 2理想情况下,实现这一点的方式将允许我在 stdout/stderr 出现时处理它们(一次一行),而不是稍后处理。
如果你愿意使用图书馆,zt-exec https://github.com/zeroturnaround/zt-exec非常方便,可以将进程的stdout和stderr重定向到SLF4J。
例如,要将 stdout 重定向到调用类的记录器的信息级别,将 stderr 重定向到错误级别:
new ProcessExecutor().command("java", "-version")
.redirectOutput(Slf4jStream.ofCaller().asInfo())
.redirectError(Slf4jStream.ofCaller().asError())
.execute();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)