19
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Capistrano3.5でデプロイしたらログが省略された。辛いと思ったら。

Last updated at Posted at 2016-06-27

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
stdoutstderrの両方にSSH出力を出力します。

false
SSH出力をどこにも出力しません。
log_file log/capistrano.log nil, logへのPATH nil
オフ

保存するlogファイルのPATH
指定したファイルにcapistrano本来の(冗長な)ログが書き出されます。
truncate :auto false, :auto, 文字数 false
全て表示します。

:auto
ターミナルの横幅いっぱいまで表示され、それ以降はカットされます。

表示文字数(例: 80)
指定した文字数分だけ出力され、それ以降はカットされます。

良い進化!
めでたしめでたし。

19
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?