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