【问题标题】:Forcing Eclipse to showing only errors强制 Eclipse 只显示错误
【发布时间】:2013-07-16 03:08:23
【问题描述】:

是否可以告诉 Eclipse 在控制台中只显示错误?

这可能很有用,因为我正在使用使用输出来显示不需要的数据的外部库。我知道有一个按钮“标准错误更改时显示控制台”,但是,我正在寻找一个过滤器。

问候。

【问题讨论】:

  • 使用什么样的日志记录?每个实现都有自己的方式来提高每个包/类的日志记录级别

标签: java eclipse


【解决方案1】:

Eclipse(Console 视图)显示两种不同的输出:标准输出 (System.out) 和错误输出 (System.err)。 Eclipse 本身无法区分程序运行时记录的实际错误/异常,以及将版权/许可信息写入错误流的外部库。

【讨论】:

  • 这对我来说更像是一个评论,而不是一个答案。我认为他的问题需要进一步澄清(他试图隐藏什么“错误”?)但我认为答案不是建议的地方
  • 我想我知道他在说什么。 Tity 使用了一个外部库,该库将一些内容写入错误流,但对于用户而言,该库是例如一个信息。不得用于商业用途,因为它只是评估版(或类似的版本)。所以它只是来自外部库的信息写入错误流,而不是错误/异常。
  • 无论哪种情况,这都不是答案。他在问他如何禁用它。如果他正在使用直接写入System.outSystem.err 的依赖项,他需要在昨天转储该依赖项。日志库就是因为这个原因而存在的,他可能有办法阻止这个输出
【解决方案2】:

您可以使用 System.setOut 和 System.setErr 函数将 System.out 和/或 System.err 重定向到另一个 OutputStream。这样您就可以创建自己的“控制台视图”或自己处理输出。如果您实现自定义的 OutputStream 类,您还可以将数据发送到原始 OutputStream(原始 System.out 或 System.err)。

PrintStream oldOut;

oldOut = System.out;
System.setOut(new PrintStream(new OutputStream() {
    @Override
    public void write(int b) throws IOException {
        // handle the "b" or
        // send it to old stdout:
        oldOut.write(b);
    }
}));

// do what you want with the stream and afterwards
System.setOut(oldOut);

另外请注意,如果您在 UI 线程中执行此操作,可能会出现问题。对我来说,应用程序总是在之后挂起。

如果您重定向这些流,您可以决定是否将其转发到标准输出/错误。

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 2020-03-10
    • 2016-02-18
    • 2012-03-08
    • 2013-12-06
    • 2012-09-22
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    相关资源
    最近更新 更多