钩入System.out.println();并修改

问题描述 投票:6回答:3

我想修改由System.out.println();打印的输出。这怎么可能?可能-我已经在Bukkit / Craftbukkit中看到了。如果插件正在使用System.out.println(String string)打印字符串; Bukkit将时间/日期和记录状态添加到字符串中。我想像Bukkit一样。

java string logging prefix
3个回答
15
投票

您可以更改用作标准输出的PrintStream

System.setOut(PrintStream out)

创建您自己的PrintStream实现,该实现将您想要的任何其他信息打印到(旧)标准输出,并通过以下方式进行设置:

PrintStream

示例:

以下示例在使用System.setOut(myStream); 方法打印的每个打印的String之前打印当前时间毫秒:

PrintStream.println(String x)

输出:

PrintStream.println(String x)

注意:

此示例仅覆盖PrintStream myStream = new PrintStream(System.out) { @Override public void println(String x) { super.println(System.currentTimeMillis() + ": " + x); } }; System.setOut(myStream); System.out.println("Hello World!"); 方法,因此调用1420553422337: Hello World! 的其他打印方法不会将时间戳添加到输出中。



0
投票

这个问题已经回答了,但是,我想添加一个很好的方法来跟踪打印。

PrintStream.println(String x)

现在,当您打印某些内容时,它将显示为“(File:linenumber)文本”,在许多编辑器中,您只需单击该内容即可跳到该位置。一直获取stacktrace可能很昂贵,因此最好只在调试期间使用它。

© www.soinside.com 2019 - 2024. All rights reserved.