【问题标题】:Temporarily Disable System.out暂时禁用 System.out
【发布时间】:2013-11-29 20:28:30
【问题描述】:

我正在尝试实现 This solution 临时禁用流氓库的输出。然而,我的问题是我得到了这个:

The constructor PrintStream(new OutputStream(){}) is undefined 

使用此代码

 PrintStream out = System.out;
            System.setOut(new PrintStream(new OutputStream() {
                 public void write(int b) throws IOException {}
            }));

这个类怎么可能没有构造函数呢?谢谢

【问题讨论】:

  • 在我的系统上编译得很好。尝试在public void write() 上方添加@Override
  • 成功了,谢谢

标签: java constructor io


【解决方案1】:

我实际上是将所有 system.out 和 system 转发到底层记录器。

private static void redirectStdOutErrToSl4j() {
    System.setOut(new PrintStream(System.out) {
        @Override
        public void print(final String s) {
            logger.info(s);
        }
    });
    System.setErr(new PrintStream(System.err) {
        @Override
        public void print(final String s) {
            logger.error(s);
        }
    });
}

并简单地调用静态块上的方法。

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多