Log4j висит мое приложение - PullRequest
       5

Log4j висит мое приложение

0 голосов
/ 16 ноября 2010

Я пытаюсь получить консольный вывод из внешнего приложения в моем приложении. Когда я вызываю приложение externall из моего кода, оно зависает с сообщением:

Настройка ведения журнала ...

Настройка log4j из: C: \ GPAT \ log4j.cfg

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

StringBuffer output = new StringBuffer();</p> <pre><code> try { Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(GSATCommand); BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream())); System.out.println("Test running..."); String line = null; while ((line = input.readLine()) != null) { System.out.println(line); // Writes the test output to console output.append(line); output.append("\n"); } int exitVal = proc.waitFor(); System.out.println("Process exitValue: " + exitVal); System.out.println("Test successfully executed"); } catch (Throwable t) { t.printStackTrace(); }

Спасибо за чтение.

1 Ответ

2 голосов
/ 16 ноября 2010

Вам нужно использовать и stdout, и stderr из порожденного процесса в отдельных потоках, чтобы предотвратить поведение блокировки (ваш порожденный процесс будет записывать в буферы и блокировать, если эти буферы не очищаются вашимпроцесс потребления).

См. 2-й абзац этого ответа для получения более подробной информации и ссылки на подходящее исправление.

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