事情是......我正在使用DefaultExecutor
类org.apache.commons.exec
库运行一个进程。像这样:
public class Main {
public static void main(String[] args) throws IOException, InterruptedException {
CommandLine cmd = new CommandLine("java");
DefaultExecutor exec = new DefaultExecutor();
exec.setExitValue(1);
exec.execute(cmd);
}
我需要使用另一个线程“在运行中”获取该输出,以将其记录到别处。实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
使用PipedOutputStream
和PipedInputStream
。你可以找到一个example here。不要忘记close
your streams.
答案 1 :(得分:0)
你应该看看log4j
,一个来自Apache的非常有用的项目。在我最近工作的项目中,log4j
用于将来自各种线程的所有日志放入一个方便的文件中。只需确保构建记录器的方式只有一个实例可用,这可以解决您的问题。
不幸的是,我只是一名实习生,在团队设置日志系统时没有出现,所以我实际上无法帮助您进行配置。幸运的是,该项目的website似乎有很多文档可以帮助你。