Rails: Logging for code in the lib directory?

2020-05-16 23:56发布

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

2条回答
家丑人穷心不美
2楼-- · 2020-05-17 00:31

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.

查看更多
劫难
3楼-- · 2020-05-17 00:39

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..."
查看更多
登录 后发表回答