Capistrano3.5.0以降ではデフォルトでログがターミナルの横幅いっぱいまでしか表示されない
新しいrailsアプリケーションを作成していつも通りCapistranoさんをインストール。バージョンは3.5.0になったみたいです。
そしてもろもろ設定していつも通りbundle exec cap staging deploy
!
そしてしばらく様子を見ているとなんとなくログがオシャレになった気が。そしてbundler:install
タスクに入ったその時!
・・・
00:12 bundler:install
01 RBENV_ROOT=/usr/local/rbenv RBENV_VERSION=2.3.0 /usr/local/rbenv/bin/rbenv exec bundle insta…
✔ 01 hoge@123.123.123.123 0.986s
・・・
実行コマンドが途中から…
になっちゃってる・・・!
これではエラーが出た時にどんなコマンドを実行しているのかがわからず詰んでしまう可能性があります。
そんな時は
set :format_options, truncate: false
そんな時はdeploy.rb
に以下の記述を加えましょう。
# Pass options to Airbrussh
set :format_options, truncate: false
これで省略されずに出力されます。
app_path/log/capistrano.log
を見れば素のログが全て観れる
デフォルトのままでもlog/capistrano.log
にcapistrano素のログが書き出されているので、デフォルトのまま利用して、ログが必要な時だけこのファイルを確認するという流れもなかなか良いと思います。
Airbrusshが導入されたため
capistrano3.5.0からログのフォーマッティングにAirbrusshというgemを使うようになったようです。
これまではこんなログでした。
・・・
INFO [7b16205f] Running RBENV_ROOT=/usr/local/rbenv RBENV_VERSION=2.3.0 /usr/local/rbenv/bin/rbenv exec bundle install --binstubs /home/hoge/apps/fuga_app/shared/bin --path /home/hoge/apps/fuga_app/shared/bundle --without [:development, :test] --deployment --quiet as hoge@123.123.123.123
DEBUG [7b16205f] Command: cd /home/hoge/apps/fuga_app/releases/20160627033859 && ( export RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.3.0" QMAKE="/usr/lib64/qt5/bin/qmake" PATH="/usr/pgsql-9.5/bin:/usr/local/rbenv/shims:/usr/local/rbenv/bin:$PATH" ; RBENV_ROOT=/usr/local/rbenv RBENV_VERSION=2.3.0 /usr/local/rbenv/bin/rbenv exec bundle install --binstubs /home/hoge/apps/fuga_app/shared/bin --path /home/hoge/apps/fuga_app/shared/bundle --without [:development, :test] --deployment --quiet )
INFO [7b16205f] Finished in 0.767 seconds with exit status 0 (successful).
・・・
とまぁ別にわかりにくくはないんだけどいつもこんなには要らない!だいたい何を実行しているかがわかれば良いですね!
だったらもっとわかりやすくしてあげるよ!
・・・
00:12 bundler:install
01 RBENV_ROOT=/usr/local/rbenv RBENV_VERSION=2.3.0 /usr/local/rbenv/bin/rbenv exec bundle insta…
✔ 01 hoge@123.123.123.123 0.986s
・・・
というのがAirbrusshというgemのようです。
・・・
# 開始から12秒後にbundler:installタスクを実行開始
00:12 bundler:install
# そのタスクないの処理一つ一つに連番を振ってわかりやすく表示(連番は7b16205fなどに対応しているようです)
01 RBENV_ROOT=/usr/local/rbenv RBENV_VERSION=2.3.0 /usr/local/rbenv/bin/rbenv exec bundle insta…
# その処理の実行結果と実行者、それにかかった時間
✔ 01 hoge@123.123.123.123 0.115s
・・・
確かにわかりやすい。
:format_options
では他にも色々と指定できる
さらにこんなオプションもあります。
オプション | デフォルト | 指定可能な値 | 概要 |
---|---|---|---|
banner |
nil |
nil , 文字列
|
nil 何も表示しません。 文字列 これに指定した文字列をcapistranoの実行開始直後に出力します。 |
color |
:auto |
false , true , :auto
|
false オフ true ANSIで規定された色を用いて出力されます。 :auto 標準出力がTTYもしくは環境変数 SSHKIT_COLOR がセットされている場合にANSIで規定された色を用いて出力されます。 |
command_output |
true |
:stdout , :stderr , true , false
|
:stdout stdout にSSH出力を出力します。:stderr stderr にSSH出力を出力します。true stdout とstderr の両方にSSH出力を出力します。false SSH出力をどこにも出力しません。 |
log_file |
log/capistrano.log |
nil , logへのPATH |
nil オフ 保存するlogファイルのPATH 指定したファイルにcapistrano本来の(冗長な)ログが書き出されます。 |
truncate |
:auto |
false , :auto , 文字数 |
false 全て表示します。 :auto ターミナルの横幅いっぱいまで表示され、それ以降はカットされます。 表示文字数(例: 80) 指定した文字数分だけ出力され、それ以降はカットされます。 |
良い進化!
めでたしめでたし。