如何阻止Java库打印到控制台?

dav*_*ave 8 java console

我正在使用一个库,当我引用它时,它会向控制台输出一堆多余的信息.有没有办法让图书馆的输出变得沉寂?

Boz*_*zho 15

如果它使用日志记录框架(log4j,commons-logging等),则可以编辑/创建属性文件以指示高日志记录阈值.在log4j中,这看起来像:

log4j.logger.org.library=error
Run Code Online (Sandbox Code Playgroud)

如果图书馆正在使用System.out,那首先不是一个好的图书馆.您可以PrintStream通过调用System.setOut(yourDummyPrintStream)(和System.setErr(..))来更改.您的虚拟打印流只会吞下数据而不会在任何地方打印.


Jan*_*Jan 7

您是否尝试使用System.setOut()和设置OUT和ERR通道System.setErr()


Bil*_*l K 5

我投了Jan的答案,想补充一下:

使用setOut意味着您无法再在程序中打印到system.out.

你可以做

PrintStream oldOut=System.out
Run Code Online (Sandbox Code Playgroud)

首先保存它,然后调用setOut来改变它 - 然后只需打印到oldOut.

我已经把它用作迷你记录器 - 抓住System.out,用我自己的流替换它并让我自己的流抓取堆栈跟踪并找出调用方法,以便它可以添加方法转发到原始System.out之前的名称.

非常慢,但很适合调试.有一个设置,所以你可以恢复只是打印字符串,隐藏所有输出或过滤消息来自哪个方法(这是我的主要用法,隐藏所有其他垃圾,所以我可以看到我自己的输出).