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


## Capistrano3.5.0以降ではデフォルトでログがターミナルの横幅いっぱいまでしか表示されない
新しいrailsアプリケーションを作成していつも通りCapistranoさんをインストール。バージョンは3.5.0になったみたいです。
そしてもろもろ設定していつも通り`bundle exec cap staging deploy`!

そしてしばらく様子を見ているとなんとなくログがオシャレになった気が。そして`bundler:install`タスクに入ったその時！

```zsh
・・・
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`に以下の記述を加えましょう。

```rb
# Pass options to Airbrussh
set :format_options, truncate: false
```
これで省略されずに出力されます。

### `app_path/log/capistrano.log`を見れば素のログが全て観れる
デフォルトのままでも`log/capistrano.log`にcapistrano素のログが書き出されているので、デフォルトのまま利用して、ログが必要な時だけこのファイルを確認するという流れもなかなか良いと思います。

## Airbrusshが導入されたため

capistrano3.5.0からログのフォーマッティングに[Airbrussh](https://github.com/mattbrictson/airbrussh)というgemを[使うようになった](https://github.com/capistrano/capistrano/commit/d6a3b3efa6bea22586598389cdede26953f0601e)ようです。

これまではこんなログでした。

```zsh
・・・
  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).
・・・
```

とまぁ別にわかりにくくはないんだけどいつもこんなには要らない！だいたい何を実行しているかがわかれば良いですね！
だったらもっとわかりやすくしてあげるよ！

```zsh
・・・
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](https://github.com/mattbrictson/airbrussh)というgemのようです。

```zsh
・・・
# 開始から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`<br />何も表示しません。<br /><br />`文字列`<br />これに指定した文字列をcapistranoの実行開始直後に出力します。|
|`color`|`:auto`|`false`, `true`, `:auto`|`false`<br />オフ<br /><br />`true`<br />ANSIで規定された色を用いて出力されます。<br /><br />`:auto`<br />標準出力がTTYもしくは環境変数`SSHKIT_COLOR`がセットされている場合にANSIで規定された色を用いて出力されます。|
|`command_output`|`true`|`:stdout`, `:stderr`, `true`, `false`|`:stdout`<br />`stdout`にSSH出力を出力します。<br /><br />`:stderr`<br />`stderr`にSSH出力を出力します。<br /><br />`true`<br />`stdout`と`stderr`の両方にSSH出力を出力します。<br /><br />`false`<br />SSH出力をどこにも出力しません。|
|`log_file`|`log/capistrano.log`|`nil`, logへのPATH|`nil`<br />オフ<br /><br />`保存するlogファイルのPATH`<br />指定したファイルにcapistrano本来の（冗長な）ログが書き出されます。|
|`truncate`|`:auto`|`false`, `:auto`, 文字数|`false`<br />全て表示します。<br /><br />`:auto`<br />ターミナルの横幅いっぱいまで表示され、それ以降はカットされます。<br /><br />`表示文字数（例: 80)`<br />指定した文字数分だけ出力され、それ以降はカットされます。|

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