0

デフォルトではなく、要求されたときにのみprintlnを表示させることができるJavaの方法はありますか? 基本的に、多くのプログラムで "-v" を使用して冗長モードを提供し、何が起こっているかについての情報を提供するのと似ています。

たとえば、ループ内に if ステートメントがあり、ループの反復ごとに if ステートメントが true と評価されるかどうかを示す単純な println があるとします。不要なときにコメントアウトし、必要なときにコメントを外す以外に、可視性のオン/オフを切り替える方法はありますか? 次に、保存、再コンパイルなどを行います。

自分のプログラムで何が起こっているのかを簡単に確認できるようになりますが、それだけ多くの情報が必要な場合に限ります。私が言ったように、私は基本的に、印刷ステートメントを表示する「冗長」モードを実装する方法を探しています。保存、再コンパイルなどをコメント/コメント解除する必要はありません.Javaにはこのようなものがありますか?

4

2 に答える 2

6

最良の選択は、何らかの適切なロガー (例えばlog4j ) を使用することです。

それが不可能な場合は、次のようなものを使用して stdout と stderr を「消費」できます...

PrintStream nullPrintStream = new PrintStream(new OutputStream() {
    @Override
    public void write(int b) throws IOException {
    }
});
System.setErr(nullPrintStream);
System.setOut(nullPrintStream);

すべての出力が印刷されないようにします。より適切な場合は、プロキシ プロセスを使用して (プロキシにラップされた現在の stdout を使用してPrintStream) コンテンツをフィルタリングできます...

于 2013-08-20T00:57:36.427 に答える
0

フラグを使用して sysout をオフにすることはできません。探している機能は、loggersなどによって提供されlo4jます。ロガーを使用すると、 を使用しConsoleAppenderて常にログ レベルを設定できます。

于 2013-08-20T00:58:09.270 に答える