【问题标题】:Two OutputStream's instead of one?两个OutputStream而不是一个?
【发布时间】:2010-03-26 11:07:21
【问题描述】:

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

cplex.setOut(OutputStream arg0);

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

【问题讨论】:

    标签: java outputstream


    【解决方案1】:

    我相信是的。

    我会使用apache commons io lib。

    例如

    FileOutputStream fos = ...;
    TeeOutputStream brancher = TeeOutputStream(fos, System.out);
    cplex.setOut(brancher);
    

    【讨论】:

      【解决方案2】:

      编写您自己的 OutputStream 实现,它将对 write 方法的调用委托给两个包装好的 OutputStream,一个用于控制台,一个用于文件。

      【讨论】:

      • 我将日志从那里重定向到 log4j,它工作正常。
      【解决方案3】:

      您可以使用Apache Commons IO library 中的TeeOutputStream。

      【讨论】:

        【解决方案4】:

        简单:

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

        【讨论】:

          猜你喜欢
          • 2021-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-02
          • 1970-01-01
          • 1970-01-01
          • 2021-07-28
          • 2017-10-17
          相关资源
          最近更新 更多