Hook into System.out.println(); and modify

前端 未结 3 1135
借酒劲吻你
借酒劲吻你 2021-01-05 17:47

I would like to modify the output printed by System.out.println();. How is this possible? It is possible - I\'ve seen it in Bukkit/Craftbukkit. If a plugin is p

3条回答
  •  孤独总比滥情好
    2021-01-05 18:09

    You can change the PrintStream that is used as the standard output:

    System.setOut(PrintStream out)

    Create your own PrintStream implementation which prints whatever extra info you want to the (old) standard output, and set it with:

    System.setOut(myStream);
    

    Example:

    The following example prints the current time millis before each printed String that is printed with PrintStream.println(String x) method:

    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!");
    

    Output:

    1420553422337: Hello World!
    

    Note:

    This example only overrides the PrintStream.println(String x) method, so calling other print methods of PrintStream would not add the time stamp to the output.

提交回复
热议问题