出力の管理¶
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: ユーザーが生成する出力、例えば
fastprint
やputs
関数を使った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/"
debug
がオンで shell がTrue
ならリモートサーバーに渡される文字通りすべての文字列が表示されます:[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
をオフにすると自分自身の出力と最小の出力(もしオンならstatus
とdebug
)になります。 - commands:
stdout
とrunning
を含む。標準エラー出力を表示してエラーでない出力全体を隠すのに便利です。
バージョン 1.4 で変更: commands
出力エイリアスを追加。
出力レベルの表示/非表示¶
Fabricの出力レベルの切り替え方法はいくつかあります; それぞれの箇条書きのAPIドキュメントへのリンクを参照してください:
直接 fabric.state.output を編集する:
fabric.state.output
はディクショナリーサブクラスで (env のような) key は出力レベル名、そして value は True (指定したタイプの出力を表示) か False (隠す) のどちらかです。fabric.state.output
これは出力レベルの最も低いレベルの実装でFabricが出力を表示するかどうかの内部参照です。コンテキストマネージャー:
hide
とshow
は文字列としてひとつ以上の出力レベル名を持つコンテキストマネージャーです。 hide か show どちらかのラップしたブロックがあります。Fabricの他のコンテキストマネージャーのように、ブロックが存在すれば以前の値が保持されています。コマンドライン引数:
--hide
と--show
が使えます。 fab オプションと引数 これは同じ名前のコンテキストマネージャー(しかし当然グローバルに適用されます)と同じ動作で入力にコンマで区切られた文字列を使います。