在Rails.logger中可以看到在Ruby Gem“库”中进行日志记录的最简单方法吗?

时间:2016-11-10 19:44:01

标签: ruby-on-rails ruby logging

我知道如何使用Rails.logger登录Rails。我的问题是,如何将之前被外部化为Ruby on Rails应用程序日志所需的gem的对象的方法,以便在需要输出内容时可以在标准Rails日志中看到它?有没有办法在不需要Rails的Gemfile的情况下做到这一点?

例如,由于目标代码曾经是Rails应用程序的一部分,我们看到以下内容:

if (val1 == val2)
      ## the converted strings are the same, log the differences (something was misparsed)
      ## for example, there can be mis-parsings between unit number and post-directionals
      logger.warn "Curious Address Mismatch (1) :: #{first}"  ##TODO: set these logging statements so that they log errors correctly when this method is called in a delayed job (which will be the case in Mintrak2)
      logger.warn "Curious Address Mismatch (2) :: #{second}"  

      return true
end

这个记录器曾经是Rails应用程序的一部分,因此可以想象是一个Rails.Logger。这不再适用,当Gem需要调试时,您会看到错误:

D, [2016-11-10T11:57:03.581467 #12602] DEBUG -- : Error importing FileSet: undefined local variable or method `logger' for AddressParser:Class
D, [2016-11-10T11:57:03.581660 #12602] DEBUG -- : BT: /var/www/mintrak2/shared/bundle/ruby/2.1.0/bundler/gems/ehs-address-parser-lib-f390aacab26a/lib/tlc_address_parser.rb:649:in `compare_address_hashes'

我应该只需要Rails并继续前进吗?我正在使用的库的CLI前端可以在没有rails的情况下工作,因此我不想使用Rails依赖项来阻塞库。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以确保已加载Rails,然后完全限定记录器的路径(即Rails.logger.warn),或者创建一个具有可在Rails应用程序内设置的属性的单例。然后,您可以使用初始化程序依赖注入对Rails记录器的引用。