0

在 Java 中有什么方法可以让 println 仅在请求时出现,而不是默认出现?基本上类似于在许多程序中使用“-v”来为您提供详细模式,并提供有关正在发生的事情的信息。

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

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

4

2 回答 2

6

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

如果这是不可能的,你可以使用类似的东西“消耗”标准输出和标准错误......

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

这会阻止所有输出开始打印。PrintStream如果更合适,您可以使用代理进程(使用包含在代理中的当前标准输出)来过滤内容......

于 2013-08-20T00:57:36.427 回答
0

不能使用标志关闭任何 sysout。您正在寻找的功能由loggers诸如lo4j. 使用记录器,您可以使用ConsoleAppender并始终设置日志级别。

于 2013-08-20T00:58:09.270 回答