Получение всех выходных данных из консоли при запуске процесса с 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
использовался для объединения всех журналов из разных потоков в один удобный файл. Просто убедитесь, что вы создаете регистратор таким образом, чтобы был доступен только один его экземпляр, и это должно решить вашу проблему.
К сожалению, я был только стажером и не присутствовал, когда команда настраивала систему регистрации, поэтому я не могу помочь вам с настройкой. К счастью, на сайте проекта есть много документации, чтобы помочь вам.