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

Tru*_*per 6 java string logging prefix

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

icz*_*cza 14

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

System.setOut(PrintStream out)

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

System.setOut(myStream);
Run Code Online (Sandbox Code Playgroud)

例:

以下示例在String使用PrintStream.println(String x)方法打印的每个打印之前打印当前时间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!");
Run Code Online (Sandbox Code Playgroud)

输出:

1420553422337: Hello World!
Run Code Online (Sandbox Code Playgroud)

注意:

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