2015-01-06 2 views
5

System.out.println();에 의해 인쇄 된 출력을 수정하고 싶습니다. 이것이 어떻게 가능한지? 가능합니다 - Bukkit/Craftbukkit에서 본 적이 있습니다. 플러그인이 System.out.println (문자열 문자열)을 사용하여 문자열을 인쇄하는 경우; Bukkit은 시간/날짜 및 로깅 상태를 문자열에 추가합니다. 나는 Bukkit과 같은 것을하고 싶다.Hook into 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) 메서드이므로의 다른 인쇄 메서드를 호출하십시오.은 출력에 시간 소인을 추가하지 않습니다.

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

    @Override 

    public void println(String yourString) { 

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

    } 

}; 

print.println("your String");