2016-07-22 1 views
0

このシナリオは次のとおりです。file1jarのファイルMinimizeがあります。私は、MinimizeTableと呼ばれるclassobjectを作成します。これはjarで定義されています。さて、このオブジェクトを作成すると、jarファイルで定義されたstdoutにいくつかの行が出力されます。私はこの出力だけをリダイレクトしたいです。これとは別に、私のメインファイルには、stdout自体に出力する必要があるstdout行がたくさんあります。 jarファイルで印刷されているものだけをリダイレクトする方法はありますか?Javaのjarファイルのstdoutのリダイレクト

class file1{ 
    public static void main(String[] args) 
    { 
     MinimizedTable M = new MinimizedTable(); //this instantly prints stuff out which I want to be redirected and not printed to stdout. 
     System.out.println("Hello"); //This line must be printed to stdout. 
    } 
    } 

jarファイルを触れずにこれを行うのいずれかの方法があります - 私は以下のような状況が定義されていますか?私の説明が理にかなっているといいですね。

+1

あなたは 'MinimizeTable'がどこにあるいくつかの洞察を与えることはできますか?独自のJARファイルに配置されていますか?それは 'log4j'を認識しますか?もしそうなら、あなたはSundarajがコメントしたものであなたが望むものを達成することができます。 – Carlos

答えて

0

あなたはのLog4j、これと似たような...純粋なJavaソリューションについては

log4j.logger.abc.xyz.MinimizedTable=OFF 

でそれを達成することができ、このSO questionを参照してください。任意の外部依存関係がなければ、メインの若干の修正と

0

:このような、その後

System.setOut(new FilteredOutput(System.out)); 

    MinimizedTable M = new MinimizedTable(); 

    System.out.println("Hello"); 

そしてFilteredOutput何か:

import java.io.OutputStream; 
import java.io.PrintStream; 


public class FilteredOutput extends PrintStream { 

    public FilteredOutput(OutputStream out) { 
     super(out); 
    } 

    @Override 
    public void println(String x) { 

     if (Thread.currentThread().getStackTrace()[2].getClassName().equals(MinimizedTable.class.getName())) { 

      super.println("From MinimizedTable: "+x); 

     } else { 

     super.println(x); 

     } 
    } 

    ... 

} 
関連する問題