2015-01-06 15 views
5

System.out.println();で出力される出力を変更したいと思います。これはどのように可能ですか? 可能です - 私はBukkit/Craftbukkitで見ました。プラグインがSystem.out.println(文字列)で文字列を出力している場合。 Bukkitは、文字列に時刻/日付とロギングステータスを追加します。 私はBukkitのように同じことをしたいと思います。System.out.println()にフックします。変更する

+0

独自の「印刷」クラスを設計し実装する方がよいでしょう。 – ErstwhileIII

+0

ログには自分のロガークラスがありますが、私のソフトウェアはbukkitのようなものです。他のユーザーはプラグインを開発することができます。プラグインがprintln()メソッドを使用する場合は、プレフィックスも必要です。彼らは私のロガーを使用することができますが、彼らはそれを使用する必要はありません。 – TrustedCreeper

答えて

12

あなたは標準出力として使用されているPrintStream変更することができます:あなたは(旧)標準出力、および設定したいものは何でも余分な情報を印刷、独自のPrintStream実装を作成し

System.setOut(PrintStream out)

をそれに:

System.setOut(myStream); 

例:

次の例では、印刷PrintStream.println(String x)方法で印刷された各印刷String前に、現在の時間ミリ:

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はタイムスタンプを出力に追加しません。

0
PrintStream print= new PrintStream(System.out) { 

    @Override 

    public void println(String yourString) { 

     super.println(System.currentTimeMillis()+ ": " + yourString); 

    } 

}; 

print.println("your String"); 
関連する問題