Java - Перенаправление всего вывода консоли на приложение - Проблемы с соединением потоков ввода и вывода - PullRequest
0 голосов
/ 03 ноября 2019

Мое текущее приложение (и возможные будущие приложения) использует вызовы System.out.println и Exception.PrintStackTrace. Мое текущее приложение имеет локально доступный веб-интерфейс для получения результатов. Чтобы быть независимым от любых внешних приложений, он реализует свой собственный http-сервер. В дополнение к результатам я хотел бы сделать вывод консоли (с трассировкой стека и всем) доступным через веб-интерфейс. В идеале я не хочу перенаправлять выходные данные в файл и читать оттуда, но вместо этого иметь журналы в памяти напрямую.

В Интернете существуют примеры, когда вы перенаправляете потоки, которые система предоставляет экземпляром PrintStream дляваш выбор. Один конкретный пример из книги происходит от PrintStream и перезаписывает методы write (int) и write (byte [], offset, length) для передачи данных в другой PrintStream, который затем переносится в FileOutputStream.

Проблемавозникает, когда я хочу, чтобы мой конечный вывод имел тип String (а не байтовый), и с чего я начал, это доли возможной многобайтовой последовательности символов. В Java есть масса классов, относящихся ко всем видам входных и выходных потоков, но я не нашел ничего, что НЕ охватывало бы другой производный от потока экземпляр (которого у меня нет). Мои выходные данные должны стать входными данными (там возникает проблема № 1) и должны быть буферизованы для преобразования в строку (проблема № 2).

В идеале у меня есть магический черный ящик класса X, который имеет тип PrintStream, Я установил его как err-Stream System, и я могу выполнять над ним блокирующие операции ReadLine ().

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

Кто-нибудь знает, как найтиправильный подход через этот бардак непонятных классов ввода и вывода?

Заранее спасибо

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