Rails: Logging for code in the lib directory?
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..."
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 anconfig.after_initialize
block inconfig/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
.