Два OutputStream вместо одного? - PullRequest
1 голос
/ 26 марта 2010

Я имею дело с коммерческим Java API, который предоставляет только следующую конфигурацию ведения журнала:

cplex.setOut(OutputStream arg0);

Я бы хотел вести журнал в два потока: файл и консоль. Возможно ли это?

Ответы [ 4 ]

11 голосов
/ 26 марта 2010

Я верю, что это так.

Я бы использовал apache commons io lib .

Например

FileOutputStream fos = ...;
TeeOutputStream brancher = TeeOutputStream(fos, System.out);
cplex.setOut(brancher);
3 голосов
/ 26 марта 2010

Напишите свою собственную реализацию OutputStream, которая делегирует вызовы методов write двум обернутым OutputStreams, один для консоли и один для файла.

2 голосов
/ 26 марта 2010

Вы можете использовать TeeOutputStream из библиотеки ввода-вывода Apache Commons .

0 голосов
/ 28 июня 2012

Легко:

cplex.setOut(new OutputStream() {

    public void write(int b) throws IOException {
        outputStream1.write(b);
        outputStream2.write(b);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...