挂钩到System.out.println(); 并修改

我想修改System.out.println();打印的输出System.out.println(); 。 这怎么可能? 这是可能的 – 我在Bukkit / Craftbukkit中看到过它。 如果插件正在使用System.out.println(String string)打印字符串; Bukkit为字符串添加时间/日期和日志状态。 我想像Bukkit一样做。

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

System.setOut(PrintStream out)

创建自己的PrintStream实现,它将您想要的任何额外信息打印到(旧)标准输出,并将其设置为:

 System.setOut(myStream); 

例:

以下示例在使用PrintStream.println(String x)方法打印的每个打印String之前打印当前时间millis:

 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! 

注意:

此示例仅覆盖PrintStream.println(String x)方法,因此调用PrintStream其他print方法不会将时间戳添加到输出。

 PrintStream print= new PrintStream(System.out) { @Override public void println(String yourString) { super.println(System.currentTimeMillis()+ ": " + yourString); } }; print.println("your String");