LoginSignup
9
2

More than 5 years have passed since last update.

【解決方法】passenger利用時にRailsのログがコンソールへ出力されない

Posted at

はじめに

Ruby 2.5.1 + Rails 5.2 環境で作成したアプリをphusion/passenger-ruby25イメージを利用してコンテナ化した際に何箇所か引っかかったところがあったので備忘録として投稿します。

問題点

コンテナを起動させているコンソールにRailsのログが出力されない。
(以前までは特別な設定をしなくてもログが出力されていた記憶だが。。。)

$ docker run -p 3000:80  \
rails-image

*** Running /etc/my_init.d/00_regen_ssh_host_keys.sh...
*** Running /etc/my_init.d/30_presetup_nginx.sh...
*** Running /etc/rc.local...
*** Booting runit daemon...
*** Runit started as PID 9
ok: run: /etc/service/nginx-log-forwarder: (pid 17) 0s
...

解決方法

環境変数:RAILS_LOG_TO_STDOUTを設定して、Railsのログを標準出力へアウトプットさせる。

Railsのコンフィグ

config/environment/production.rbには環境変数:RAILS_LOG_TO_STDOUTが存在した場合にログを標準出力へアウトプットする設定がデフォルトで含まれている。

config/environment/production.rb
  if ENV["RAILS_LOG_TO_STDOUT"].present?
    logger           = ActiveSupport::Logger.new(STDOUT)
    logger.formatter = config.log_formatter
    config.logger    = ActiveSupport::TaggedLogging.new(logger)
  end

Passengerのコンフィグ

passenger上で動かすアプリで利用する環境変数は、事前に定義しておく必要があるので、RAILS_LOG_TO_STDOUTを追加しておく。

secret_key.conf
# 省略
env RAILS_LOG_TO_STDOUT;

コンテナ起動

環境変数:RAILS_LOG_TO_STDOUTを指定した状態でコンテナを起動する。

$ docker run -p 3000:80  \
-e RAILS_LOG_TO_STDOUT=ON \
rails-image

補足:
環境変数:RAILS_LOG_TO_STDOUTに指定する値は何でもよい

9
2
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
9
2