我正在使用一个库,当我参考它时,会向控制台输出一堆多余的信息。有没有办法让图书馆的输出消失?如何阻止Java库打印到控制台?
回答
如果使用日志框架(log4j,commons-logging等),则可以编辑/创建属性文件来指示高日志记录阈值。在log4j的,这将是这样的:
log4j.logger.org.library=error
如果磁带库使用System.out
,这不是摆在首位好的库。您可以致电System.setOut(yourDummyPrintStream)
(和System.setErr(..)
)更改PrintStream
。您的虚拟打印流只会吞下数据,而不会打印到任何地方。
我不认为任何像样/理智的图书馆都使用System.out来记录消息。所以我可以放心地假设它使用某种记录框架。将特定软件包配置为处于更高日志记录级别,如“错误”或“致命”,以便您不会看到这些消息。
该库可能使用记录器,log4j或slf4j。您可以为该记录器创建配置文件,然后将日志级别设置为WARN或更高。这将停止打印信息。
您是否尝试过使用System.setOut()
和System.setErr()
来设置OUT和ERR通道?
我投了简的答案,并想补充:
使用放样意味着你不能打印到在你的程序的System.out了。
你可以做
PrintStream oldOut=System.out
首先要保存它,然后调用专列去改变它 - 然后就打印到oldOut。
我已经使用它作为迷你日志记录器 - 抓住System.out,用自己的流替换它,并让我自己的流抓取堆栈跟踪并找出调用方法,以便它可以在转发到原始System.out之前添加方法名称。
非常慢,但很好的调试。有一个设置,所以你可以恢复到只是打印字符串,隐藏所有输出或筛选消息来自哪个方法(这是我的主要用法,隐藏所有其他垃圾,所以我可以看到我自己的输出)。
考虑使用AspectJ,它可以用你所选择的语句来替换所有的System.out.println(),这是一个日志语句。这也适用于第三方jar文件(查找加载时织入)。
如果LIB使用打印我会使用ASM与另一个类的调用与燕子等
- 1. Log4j如何阻止我的记录器打印到控制台?
- 2. 如何将数据从数据库打印到Java控制台?
- 3. Portaudio:防止打印到控制台c
- 4. 防止codecoverage打印到控制台
- 5. 如何禁止在.NET中将控件打印到控制台?
- 6. Java打印到Dragon控制台
- 7. Java Eclipse不会打印到控制台
- 8. NetBeans不会打印到控制台JAVA
- 9. 如何用Dart打印到控制台?
- 10. 如何从XSJS打印到控制台
- 11. 如何使用phantomjs将控制台打印到控制台
- 12. Hamcrest - 打印到控制台
- 13. Windows cmd控制台停止打印
- 14. 使用JAVA打印控制台之外
- 15. nodejs如何打印控制台顶部
- 16. 如何以彩色打印控制台?
- 17. 如何以跨平台的方式打印到控制台?
- 18. Java Logger不会打印任何内容到控制台
- 19. 控制台应用程序:打印到控制台溢出
- 20. C++打印→Windows控制台
- 21. 取消控制台打印
- 22. 控制台打印多次
- 23. 如何在断点上将控件打印到控制台上?
- 24. Django不打印_id到控制台
- 25. MIPS:打印注册值到控制台
- 26. 无法打印到控制台与log4j
- 27. XUL JS打印错误到控制台
- 28. Intellij远程tomcat打印到控制台
- 29. Capistrano的run_locally不打印到控制台?
- 30. puts不打印东西到控制台
哪个库是类似的方法signatutes全部更换sys.out.printXXx? – Romain 2010-03-08 17:58:34