我正在使用一個庫,當我參考它時,會向控制檯輸出一堆多餘的信息。有沒有辦法讓圖書館的輸出消失?如何阻止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. Portaudio:防止打印到控制檯c
- 2. 防止codecoverage打印到控制檯
- 3. 如何禁止在.NET中將控件打印到控制檯?
- 4. NetBeans不會打印到控制檯JAVA
- 5. Java Eclipse不會打印到控制檯
- 6. Java打印到Dragon控制檯
- 7. Hamcrest - 打印到控制檯
- 8. Windows cmd控制檯停止打印
- 9. 如何以彩色打印控制檯?
- 10. Java Logger不會打印任何內容到控制檯
- 11. 如何以跨平臺的方式打印到控制檯?
- 12. 控制檯應用程序:打印到控制檯溢出
- 13. 如何在斷點上將控件打印到控制檯上?
- 14. 使用write()打印到控制檯
- 15. python - 打印datetime指令到控制檯?
- 16. 從控制檯打印到文件
- 17. GNU prolog,打印到控制檯?
- 18. Kotlin Android打印到控制檯
- 19. Intellij遠程tomcat打印到控制檯
- 20. Log4j打印到控制檯兩次
- 21. 的LogFactory不打印到控制檯
- 22. Log4net不打印到控制檯在wpf
- 23. 在SignalR Hub中打印到控制檯
- 24. 將char32_t打印到控制檯
- 25. cx_Freeze無法打印到控制檯
- 26. node.js不打印到控制檯
- 27. Printer.js不打印到控制檯
- 28. 在PyDev中打印到控制檯
- 29. mvaddch()不打印到控制檯
- 30. puts不打印東西到控制檯
哪個庫是類似的方法signatutes全部更換sys.out.printXXx? – Romain 2010-03-08 17:58:34