Возврат вывода из приложения JVM в сценарий bash - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть приложение JVM, которое запускается из сценария bash. Я хотел бы, чтобы приложение возвращало вывод в сценарий, чтобы сценарий мог использовать его в качестве параметра для других команд.

Одно из прочитанных предложений - использовать System.out.print в желаемом выводе. , Тем не менее, мое приложение выполняет значительный объем журналов, используя log4j. Он также вызывает другие библиотеки, которые также регистрируют другую информацию. Если мой bash -скрипт попытается прочитать из stdout, не будет ли он также прочитать все эти выходные данные журнала?

Другой вариант, о котором я подумал:

  1. сценарий передает /tmp/${RANDOM}.out путь к файлу к приложению
  2. Приложение JVM записывает требуемый вывод в указанный файл
  3. Сценарий считывает значение из указанного файла, как только приложение получит Закончено выполнение

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

Есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 21 апреля 2020

Этот ответ предполагает некоторый опыт и знания о bash каналах ввода-вывода, Java печати out / err и файлах конфигурации log4j.

Существует 2 метода: 1. В файле Java отправить соответствующий вывод в System.err. В скрипте bash захватите канал 2, который является stderr. Канал 1 является стандартным. 2. В конфиге log4j. xml используйте файл appender. Это отправит данные регистрации в файл. Определите Logger Root для использования этого приложения.

Существует множество тонкостей, которые могут повлиять на эти методы. Надеюсь, одного из этих вариантов будет достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...