Получение всех выходных данных из консоли при запуске процесса с Apache Commons Exec

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

Решение

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

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

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

Другие вопросы по тегам