Получение всех выходных данных из консоли при запуске процесса с Apache Commons Exec - PullRequest
1 голос
/ 16 сентября 2011

Дело в том ... Я запускаю процесс с 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);
}

Мне нужно взять этот вывод "на ходу" с другим потоком, чтобы записать его в другом месте.Каков наилучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Используйте PipedOutputStream и PipedInputStream. Вы можете найти пример здесь . Не забудьте close ваши потоки.

0 голосов
/ 17 сентября 2011

Возможно, вам стоит взглянуть на log4j, довольно полезный проект от Apache.В проекте, над которым я недавно работал, log4j использовался, чтобы поместить все журналы из разных потоков в один удобный файл.Просто убедитесь, что вы создаете регистратор таким образом, чтобы был доступен только один его экземпляр, и это должно решить вашу проблему.

К сожалению, я был только стажером и не присутствовал, когда команда установиладо системы регистрации, так что я не могу помочь вам с настройкой.К счастью, на сайте проекта есть много документации, чтобы помочь вам.

...