出力の管理

fab ツールはデフォルトで非常に冗長です。リモート側の標準出力、標準エラー出力、実行されたコマンドなど可能な限りほぼすべてを出力します。 何が起こったか知るために多くの場合これが必要になりますが実行中のFabricのタスクを追いかけるのは難しくなります。

出力レベル

タスクの出力を整理するためにFabricの出力はいくつかの重複しないレベルやグループに分けられます。そしてそれぞれ独立してオン、オフできます。これでユーザーに表示される内容を柔軟にコントロールします。

ノート

``debug``を除いてすべてのレベルでデフォルトはオンです。

標準出力レベル

標準のアトミック出力レベル/グループは次の通りです:

  • status: 状況メッセージ、例えば Fabricの実行後にはなし、ユーザーがキーボードインターラプトを使ったか、サーバーが切断されたか、などです。これらのメッセージはほぼ適切でめったに冗長でありません。

  • aborts: アボート(中止)メッセージ。状況メッセージのようにFabricをライブラリとして使用するときのみオフにすべきです。本当はすべきでありませんが。注意:この出力グループをオフにしてアボートが発生したら – なぜ Fabric がアボートしたか、どんな出力もありません!

  • warnings: 警告メッセージ。ファイルの中のテキストを grep するときのような失敗が予想される動作ではしばしばオフにされます。 env.warn_only の設定を True で一緒に使えばリモートプログラムが失敗した時の警告が完全に沈黙します。 aborts と同様にこの設定は実際の警告の動作をコントロールするわけではありません。ただ警告を表示するかしないかだけです。

  • running: 実行したコマンドや転送したファイルの出力。例えば [myserver] run: ls /var/www。実行したタスクの出力もコントロールします。例えば [myserver] Executing task 'foo'

  • stdout: ローカルやリモートの標準出力、例えばコマンドからのエラーでない出力。

  • stderr: ローカルやリモートのエラー出力、例えばコマンドからのエラーに関する出力。

  • user: ユーザーが生成する出力、例えば fastprintputs 関数を使ったfabricコードで出力されるローカル出力。

バージョン 0.9.2 で変更: “Executing task”を running 出力レベルの追加。

バージョン 0.9.2 で変更: ``user``出力レベルを追加。

デバッグ出力

最後のアトミック出力レベル、 debug これは他とはやや異なる動作をします:

  • debug: 現在デバッグをオンは(デフォルトでオフ)主に実行中の “完全な” コマンドを調べるのに使います。例えばこの run 呼び出し:

    run('ls "/home/username/Folder Name With Spaces/"')
    

    通常 running 行は run に何が渡されるか正確に表示します。このようにlike so:

    [hostname] run: ls "/home/username/Folder Name With Spaces/"
    

    With debug on, and assuming you’ve left shell set to True, you will see the literal, full string as passed to the remote server:

    [hostname] run: /bin/bash -l -c "ls \"/home/username/Folder Name With Spaces\""
    

    debug 出力が有効ならアボート中のすべての Python トレースバックを表示します。

    ノート

    出力の部分的変更(上の例では ‘running’ 行にシェルとエスケープ文字を表示する変更)は他の設定に優先します。もし running が False で debug が True ならデバッグフォームで ‘running’ 行が表示されます。

バージョン 1.0 で変更: 現在のデバッグ出力は、アボート中の完全なPhythonトレースバックを含みます。

出力レベルのエイリアス

上記の アトミック/スタンドアロン レベルに加えて Fabric は複数のレベルを組み合わせたいくつかの便利なエイリアスを提供します。組み合わされているすべてのレベルを効果的に切り替えることができます。

  • output: stdout``stderr``の両方。これは ‘running’ 行と出力状況に注目するときに便利です(それと警告)。

  • everything: warnings, running, user そして output を含む(上記)。everything をオフにすると自分自身の出力と最小の出力(もしオンなら statusdebug )になります。

  • commands: stdoutrunning を含む。標準エラー出力を表示してエラーでない出力全体を隠すのに便利です。

バージョン 1.4 で変更: commands 出力エイリアスを追加。

出力レベルの表示/非表示

Fabricの出力レベルの切り替え方法はいくつかあります; それぞれの箇条書きのAPIドキュメントへのリンクを参照してください:

  • 直接 fabric.state.output を編集する: fabric.state.output はディクショナリーサブクラスで (env のような) key は出力レベル名、そして value は True (指定したタイプの出力を表示) か False (隠す) のどちらかです。

    fabric.state.output これは出力レベルの最も低いレベルの実装でFabricが出力を表示するかどうかの内部参照です。

  • コンテキストマネージャー: hideshow は文字列としてひとつ以上の出力レベル名を持つコンテキストマネージャーです。 hide か show どちらかのラップしたブロックがあります。Fabricの他のコンテキストマネージャーのように、ブロックが存在すれば以前の値が保持されています。

    参考

    settings, これは`~fabric.context_managers.hide` や show を内部でネストコールします。

  • コマンドライン引数: --hide--show が使えます。 fab オプションと引数 これは同じ名前のコンテキストマネージャー(しかし当然グローバルに適用されます)と同じ動作で入力にコンマで区切られた文字列を使います。