7

antを使用してJavaプログラムを起動しています。

プログラムが終了した後、出力を「緩め」たくありません。そのため、プロパティ' output'を使用して出力をファイルに保存します。

<java classname="..." fork="true" output="....txt">

残念ながら、コンソール出力はもうありません。コンソールとtxtファイルに出力を表示するための良い方法は何でしょうか。

私はに代わるものを探しています

ant mytast > myFile.txt

私は望まないので、「ユーザー」はシェルリダイレクトを使用する必要があります">.."。。彼/彼女がリダイレクトすることを選択しない場合、出力は失われます。

4

3 に答える 3

8

Antには出力を記録する方法があります。http://ant.apache.org/manual/Tasks/recorder.html

レコーダは、出力をファイルに記録する現在のビルドプロセスのリスナーです。

複数のレコーダーが同時に存在する可能性があります。各レコーダーはファイルに関連付けられています。ファイル名は、レコーダーの一意の識別子として使用されます。未使用のファイル名を使用してレコーダータスクを最初に呼び出すと、レコーダーが作成され(提供されたパラメーターを使用)、ビルドのリスナーに追加されます。このファイル名を使用したレコーダタスクへの後続のすべての呼び出しは、レコーダの状態(記録しているかどうか)または他のプロパティ(ログレベルなど)を変更します。

あなたのニーズを満たしているようです。

    <compile >
        <record name="log.txt" action="start"/>
        <javac ...
        <record name="log.txt" action="stop"/>
    <compile/>
于 2012-04-12T14:46:14.263 に答える
1

プログラムが1つのファイル記述子に書き込む場合(たとえば、標準出力)、それを1つの場所にのみリダイレクトできます(つまり、コンソールまたはファイルのいずれか、両方ではありません)。

複数のリダイレクトを実現するには、次の2つのオプションがあります。

  • 外部手段を使用してそのファイル記述子を複製します(たとえば、teeコマンドはまさにそれを実行します-Windowsの場合でも、実装があります。ここここを参照してください。
  • Javaプログラム内から2つの異なる出力に同じ情報を書き込みます(たとえば、標準出力と標準エラーの両方に)。その後、従来の方法を使用して一方をリダイレクトし、もう一方をコンソールに送信します。

2番目のアプローチはコードを乱雑にし、標準エラー(サードパーティ関数の呼び出しを考えてください)と書かれている内容を完全に制御できないことが多いため、お勧めしません。

于 2012-04-12T10:49:32.697 に答える
0

あなたは記録タスクを使うことができます。これはあなたのニーズを満たすでしょう。

https://ant.apache.org/manual/Tasks/recorder.html

于 2017-02-08T07:19:02.670 に答える