drt
drt

Reputation: 888

Rails: Logging for code in the lib directory?

What is the best/easiest way to configure logging for code kept in the lib directory?

Upvotes: 42

Views: 10643

Answers (2)

Stéphan Kochen
Stéphan Kochen

Reputation: 19943

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 :logger
    end
    

    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.

Upvotes: 40

Nadeem Yasin
Nadeem Yasin

Reputation: 4534

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..."

Upvotes: 21

Related Questions