2015-01-06 22 views
5

'u değiştirin System.out.println(); ile yazdırılan çıktıyı değiştirmek istiyorum. Bu nasıl mümkün olabilir? Bu mümkündür - Bukkit/Craftbukkit'te gördüm. Bir eklenti System.out.println (String dizgisi) ile bir dize yazdırıyorsa; Bukkit bir zaman/tarih ve dizeye durum kaydı ekler. Aynı şeyi Bukkit gibi yapmak istiyorum.System.out.println() içine kancalayın; ve

+0

Kendi "yazdırma" sınıfınızı tasarlayıp uygulamaktan ve kullanmaktan daha iyi olur. – ErstwhileIII

+0

Ben oturum açmak için kendi logger sınıf var ama benim yazılım Bukkit gibi biraz. Diğer kullanıcılar bunun için eklentiler geliştirebilir ve eklenti println() yöntemini kullanırken bir önek de olmalıdır. Böylece kaydedicimi kullanabilirler, ancak kullanmak zorunda değiller. – TrustedCreeper

cevap

12

Standart çıkış olarak kullanılır PrintStream değiştirebilirsiniz: baskılar ekstra olan bilgileri (eski) standart çıkışa istediğiniz kendi PrintStream uygulaması oluşturun

System.setOut(PrintStream out)

ve set Bu sahip:

System.setOut(myStream); 

Örnek:

Aşağıdaki örnek yazdırır PrintStream.println(String x) yöntemi ile basılmıştır basılan her String önce mevcut zaman 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!"); 

Çıkış:

1420553422337: Hello World! 

Not:

Bu örnek yalnızca geçersiz kılar PrintStream.println(String x) yöntemi,'ün diğer yazdırma yöntemlerini çağırıyor, çıkışa zaman damgası eklemez.

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

    @Override 

    public void println(String yourString) { 

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

    } 

}; 

print.println("your String"); 
İlgili konular