9612


本番環境の`log/production.log`にログが出力されず困っています。  
開発環境では正常にログが`log/development.log`に出力されます。

本番環境下で`log/production.log`にログを出力させたいのでどなたかお教えください。

各環境の設定ファイルは以下のようになっております。

本番環境

[code]

    # config/environments/production.rb
    AppTool::Application.configure do
      config.cache_classes = true
      config.eager_load = false
      config.consider_all_requests_local       = false
      config.action_controller.perform_caching = true
      config.serve_static_assets = false
      config.static_cache_control = "public, max-age=3600"
      config.assets.js_compressor = :uglifier
      config.assets.compile = false
      config.assets.digest = true
      config.assets.version = '1.0'
      config.log_level = :info
      config.action_mailer.raise_delivery_errors = false
      config.i18n.fallbacks = true
      config.active_support.deprecation = :notify
    
      config.log_formatter = ::Logger::Formatter.new
      config.logger = Logger.new(config.paths["log"].first, 'weekly') # 週ごとにローテート
      config.logger.level = Logger::WARN
      config.logger.formatter = Logger::Formatter.new
      config.logger.datetime_format = "%Y-%m-%d %H:%M:%S"
    end
    
[/code]

開発環境

[code]

    # config/environments/development.rb
    AppTool::Application.configure do
      config.cache_classes = false
      config.eager_load = false
      config.consider_all_requests_local       = true
      config.action_controller.perform_caching = false
      config.action_mailer.raise_delivery_errors = false
      config.active_support.deprecation = :log
      config.active_record.migration_error = :page_load
      config.active_record.schema_format = :sql
      config.assets.debug = true
    
      config.logger = Logger.new(config.paths["log"].first, 'weekly') # 週ごとにローテート
      config.logger.level = Logger::DEBUG
      config.logger.formatter = Logger::Formatter.new
      config.logger.datetime_format = "%Y-%m-%d %H:%M:%S"
    end
    
[/code]

`Rails.logger`の値をコマンドラインで確認すると以下のようになります。

本番環境  
`RAILS_ENV=production bundle exec rails c`

[code]

    irb(main):003:0* Rails.logger
    => #<Logger:0x007f70e1d8a5a0 @progname=nil, @level=1,
    @default_formatter=#<Logger::Formatter:0x007f70e1d8a528
    @datetime_format=nil>, @formatter=#
    <ActiveSupport::Logger::SimpleFormatter:0x007f70e1d85500
    @datetime_format=nil>, @logdev=#<Logger::LogDevice:0x007f70e1d8a4b0
    @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDOUT>>,
    @mutex=#<Logger::LogDevice::LogDeviceMutex:0x007f70e1d8a488
    @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x007f70e1d8a438>>>>
    
[/code]

開発環境  
`RAILS_ENV=development bundle exec rails c`

[code]

    [1] pry(main)> Rails.logger
    => #<Logger:0x007ff0eb129538
     @default_formatter=
      #<Logger::Formatter:0x007ff0eb129510 @datetime_format="%Y-%m-%d %H:%M:%S">,
     @formatter=#<Logger::Formatter:0x007ff0eb1292b8
     @datetime_format=nil>,
     @level=0,
     @logdev=#<Logger::LogDevice:0x007ff0eb129498
     @dev=#<File:/Users/xf-dev-mac02/apptool/log/development.log>,
     @filename="/Users/xf-dev-mac02/apptool/log/development.log",
     @mutex=#<Logger::LogDevice::LogDeviceMutex:0x007ff0eb129470
     @mon_count=0,
     @mon_mutex=#<Mutex:0x007ff0eb129420>,
     @mon_owner=nil>,
     @shift_age="weekly",
     @shift_size=1048576>,
     @progname=nil>
    
[/code]

開発環境では`@filename`の値が指定されるようになっています。


CC BY-SA 3.0
2015-04-27T10:32:04.157
9597
2015-04-27T13:47:51.093
8558
question
ruby-on-rails ruby bundler
本番環境のproduction.logにログが出力されない


コードのどこかで、`Rails.logger`を標準出力になるよう上書きしているようです。Railsプロジェクトのconfig/や、app/, lib/
の下、お使いのgemなどのソースを、`logger`や`STDOUT`、`$stdout`という文字列で検索(grep)してみてください。


CC BY-SA 3.0
2015-04-27T13:47:51.093
9612
2015-04-27T13:47:51.093
9508
9597
answer