在java中打开/关闭println的任何方法(详细模式)



在Java中有没有任何方法可以使println只在请求时显示,而不是默认情况下显示?基本上类似于在许多程序中使用"-v"来提供详细模式,并提供有关正在发生的事情的信息。

例如,假设我在循环中有一个if语句,以及一个简单的println,它告诉我对于循环的每个迭代,if语句是否计算为true。除了在我不需要的时候把它注释掉,在我需要的时候取消注释之外,还有其他方法可以打开/关闭它的可见性吗?然后保存、重新编译等等。

这会让我更容易看到我的程序中发生了什么,但只有当我想要那么多信息的时候。正如我所说,我基本上是在寻找一种实现"详细"模式的方法,该模式显示打印语句,而不必对保存、重新编译等进行注释/取消注释。Java有这样的功能吗?

您的最佳选择是使用某种适当的记录器(例如log4j)。

如果这不可能,您可以使用以下方法"消费"stdout和stderr。。。

PrintStream nullPrintStream = new PrintStream(new OutputStream() {
    @Override
    public void write(int b) throws IOException {
    }
});
System.setErr(nullPrintStream);
System.setOut(nullPrintStream);

这将阻止所有输出开始打印。如果更合适的话,您可以使用代理进程(使用封装在代理PrintStream中的当前stdout)来过滤内容。。。

不能使用标志关闭任何sysout。您要查找的功能由loggers(如lo4j)提供。使用记录器,您可以使用ConsoleAppender并始终设置日志级别。

相关内容

  • 没有找到相关文章

最新更新