【问题标题】:Getting all output data form console when running process with Apache Commons Exec使用 Apache Commons Exec 运行进程时从控制台获取所有输出数据
【发布时间】:2011-09-16 19:53:24
【问题描述】:

问题是...我正在使用 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);
}

我需要使用另一个线程“运行中”输出该输出,以便将其记录到其他地方。实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: java multithreading logging apache-commons-exec


    【解决方案1】:

    使用PipedOutputStreamPipedInputStream。您可以找到example here。别忘了close your streams.

    【讨论】:

      【解决方案2】:

      您可能应该看看log4j,这是一个来自 Apache 的相当有用的项目。在我最近从事的一个项目中,log4j 用于将来自不同线程的所有日志放入一个方便的文件中。只需确保以只有一个实例可用的方式构建记录器,这应该可以解决您的问题。

      很遗憾,我只是一名实习生,在团队设置日志系统时不在场,所以我实际上无法帮助您进行配置。幸运的是,该项目的 website 似乎有大量文档可以帮助您。

      【讨论】:

      • 我知道如何记录它,但我需要先从控制台获取字符串。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      相关资源
      最近更新 更多