What is the best/easiest way to configure logging for code kept 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 :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
.
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..."