rubyruby-on-rails-4log4r

Undefined Method Formatter for Log4r in RAILS 4.0


I am getting this error after upgrading Rails from 3.1.2 to 4.0. When launching my server with rails s I got stuck with the following error

C:/ruby-2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands/server.rb:78:in `start': undefined method `formatter' for #<Log4r::Logger:0x26dd908> (NoMethodError)

I have been on the Log4r site but haven't got any infor;ation about a bug when upgrading Rails.

Does anyone have any idea where this bug comes from. Thank you!


Solution

  • The method formatter is not defined on Log4r::Logger, but on Log4r::FileOutputter. Therefore I am surprised that is worked before the Rails update. Perhaps that changed between different versions of Log4r.

    Please try the following (with adjusted filenames and patters):

    require 'log4r'
    outputter = Log4r::FileOutputter.new('log4r', filename: 'foobar.log')
    outputter.formatter = Log4r::PatternFormatter.new(
      date_pattern: "%FT%T.000Z", pattern: "%d [%l] %m"
    )
    
    logger = Log4r::Logger.new('log4r')
    logger.outputters = [outputter]
    

    Add this code to config/application.rb or to a new file like config/initializers/logger.rb