Я имею дело с коммерческим Java API, который предоставляет только следующую конфигурацию ведения журнала:
cplex.setOut(OutputStream arg0);
Я бы хотел вести журнал в два потока: файл и консоль. Возможно ли это?
Я верю, что это так.
Я бы использовал apache commons io lib .
Например
FileOutputStream fos = ...; TeeOutputStream brancher = TeeOutputStream(fos, System.out); cplex.setOut(brancher);
Напишите свою собственную реализацию OutputStream, которая делегирует вызовы методов write двум обернутым OutputStreams, один для консоли и один для файла.
write
Вы можете использовать TeeOutputStream из библиотеки ввода-вывода Apache Commons .
TeeOutputStream
Легко:
cplex.setOut(new OutputStream() { public void write(int b) throws IOException { outputStream1.write(b); outputStream2.write(b); } });