Rails: Logging for code in the lib directory? Rails: Logging for code in the lib directory? ruby ruby

Rails: Logging for code in the lib directory?


There's two ways to go about it:

  • Assuming your library is self-contained and has a module, you can add a logger attribute to your module and use that everywhere in your library code.

    module MyLibrary  mattr_accessor :loggerend

    You then either use an initializer in config/initializers/, or an config.after_initialize block in config/environment.rb to initialize your logger, like so:

    require 'mylibrary'MyLibrary.logger = Rails.logger

    This would still allow you to use your self-contained library from scripts outside of Rails. Which is nice, on occasion.

  • If using your library without Rails really doesn't make sense at all, then you can also just use Rails.logger directly.

In either case, you're dealing with a standard Ruby Logger. Also keep in mind that, in theory, the logger may be nil.


We can use Rails logger directly into the lib, see the following snippet.

require 'logger'Rails.logger.info "Hay..!!! Im in lib"Rails.logger.debug "Debugging this object from Lib #{object.inspect}"Rails.logger.error "This is an error..."