Rails 4.0.2: Rails.logger != Rails.application.config.logger
ruby-on-rails-4
Solution
Got it!
Answer: Do not use the "rails_12factor" gem if you are not using a 12factor host...
One of its features is to overwrite Rails' logger using "rails_stdout_logging" in "before_initialize".
Problem
I'm trying to get my Rails 4.0.2 (ruby 2.1.0) app to use Syslog. Here is my config: ``` config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new('myApp')) ``` I noticed that Rails.application.config.logger corresponds to the logger I set up in my production.rb file. If I use it directly (in rails c for example), I successfully get my messages in syslog. What confuses me is that Rails.logger (which is, if I understand, the one that rails itself uses) is not the same object. It's a simple Logger like the default development one. As a consequence I get all my log messages from rails in stdout. Output form rails c: ``` 2.1.0 :004 > Rails.application.config.logger => #<Syslog::Logger:0x00000003529fd8 @level=1, @formatter=#<Syslog::Logger::Formatter:0x00000003529fb0>, @facility=8> 2.1.0 :005 > Rails.logger => #<Logger:0x000000032b21d8 @progname=nil, @level=1, @default_formatter=#<Logger::Formatter:0x000000032b21b0 @datetime_format=nil>, @formatter=#<ActiveSupport::Logger::SimpleFormatter:0x000000032b1fd0 @datetime_format=nil>, @logdev=#<Logger::LogDevice:0x000000032b20c0 @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDOUT>>, @mutex=#<Logger::LogDevice::LogDeviceMutex:0x000000032b2070 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x000000032b2020>>>> ``` Could anyone please tell me if this is an expected behavior ? Am I missing something ? ** EDIT ** I added some traces (value and caller) on Rails' logger= method and here is what I get: ``` App 18055 stdout: SET LOGGER #<Syslog::Logger:0x000000044b08a8> App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/application/bootstrap.rb:32:in `block in <module:Bootstrap>' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:30:in `instance_exec' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:30:in `run' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:55:in `block in run_initializers' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:226:in `block in tsort_each' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:427:in `each_strongly_connected_component_from' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:347:in `block in each_strongly_connected_component' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `each' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `call' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `each_strongly_connected_component' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:224:in `tsort_each' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:205:in `tsort_each' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:54:in `run_initializers' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/application.rb:215:in `initialize!' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/railtie/configurable.rb:30:in `method_missing' App 18055 stdout: /home/myUser/myApp/releases/20140129114805/config/environment.rb:5:in `<top (required)>' App 18055 stdout: config.ru:3:in `require' App 18055 stdout: config.ru:3:in `block in <main>' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize' App 18055 stdout: config.ru:1:in `new' App 18055 stdout: config.ru:1:in `<main>' App 18055 stdout: /usr/share/passenger/helper-scripts/rack-preloader.rb:112:in `eval' App 18055 stdout: /usr/share/passenger/helper-scripts/rack-preloader.rb:112:in `preload_app' App 18055 stdout: /usr/share/passenger/helper-scripts/rack-preloader.rb:158:in `<module:App>' App 18055 stdout: /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>' App 18055 stdout: /usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `<main>' App 18055 stdout: SET LOGGER #<Logger:0x000000042ea8c0> App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/rails_stdout_logging-0.0.3/lib/rails_stdout_logging/rails3.rb:7:in `set_logger' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/rails_stdout_logging-0.0.3/lib/rails_stdout_logging/railtie.rb:6:in `block in <class:Railtie>' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/lazy_load_hooks.rb:36:in `call' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/lazy_load_hooks.rb:44:in `each' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/activesupport-4.0.2/lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/application/bootstrap.rb:76:in `block in <module:Bootstrap>' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:30:in `instance_exec' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:30:in `run' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:55:in `block in run_initializers' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:226:in `block in tsort_each' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:427:in `each_strongly_connected_component_from' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:347:in `block in each_strongly_connected_component' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `each' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `call' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:345:in `each_strongly_connected_component' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:224:in `tsort_each' App 18055 stdout: /home/myUser/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/tsort.rb:205:in `tsort_each' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/initializable.rb:54:in `run_initializers' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/application.rb:215:in `initialize!' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/railties-4.0.2/lib/rails/railtie/configurable.rb:30:in `method_missing' App 18055 stdout: /home/myUser/myApp/releases/20140129114805/config/environment.rb:5:in `<top (required)>' App 18055 stdout: config.ru:3:in `require' App 18055 stdout: config.ru:3:in `block in <main>' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval' App 18055 stdout: /home/myUser/myApp/shared/bundle/ruby/2.1.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize' App 18055 stdout: config.ru:1:in `new' App 18055 stdout: config.ru:1:in `<main>' App 18055 stdout: /usr/share/passenger/helper-scripts/rack-preloader.rb:112:in `eval' App 18055 stdout: /usr/share/passenger/helper-scripts/rack-preloader.rb:112:in `preload_app' App 18055 stdout: /usr/share/passenger/helper-scripts/rack-preloader.rb:158:in `<module:App>' App 18055 stdout: /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>' App 18055 stdout: /usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `<main>' ``` The first call set the right logger but it is then overwritten for a reason that I don't understand. Thanks in advance.