代码之家  ›  专栏  ›  技术社区  ›  Gerard

两个outputstream而不是一个?

  •  1
  • Gerard  · 技术社区  · 15 年前

    我正在处理一个商业Java API,只公开以下日志配置:

    cplex.setOut(OutputStream arg0);
    

    我想登录到两个流:一个文件和控制台。 有可能吗?

    4 回复  |  直到 12 年前
        1
  •  3
  •   matt b    15 年前

    编写自己的outputstream实现,将调用委托给 write 方法到两个包装的输出流,一个用于控制台,一个用于文件。

        2
  •  11
  •   Paul    15 年前

    我相信是的。

    我会使用 apache commons io lib .

    例如

    FileOutputStream fos = ...;
    TeeOutputStream brancher = TeeOutputStream(fos, System.out);
    cplex.setOut(brancher);
    
        3
  •  2
  •   Joachim Sauer    15 年前
        4
  •  0
  •   Daniel De León    12 年前

    容易的:

    cplex.setOut(new OutputStream() {
    
        public void write(int b) throws IOException {
            outputStream1.write(b);
            outputStream2.write(b);
        }
    });