Rails:在 lib 目录中记录代码?
Posted
技术标签:
【中文标题】Rails:在 lib 目录中记录代码?【英文标题】:Rails: Logging for code in the lib directory? 【发布时间】:2011-02-28 03:49:18 【问题描述】:为保存在 lib 目录中的代码配置日志记录的最佳/最简单方法是什么?
【问题讨论】:
【参考方案1】:有两种方法:
假设您的库是独立的并且有一个模块,您可以将logger
属性添加到您的模块并在您的库代码中的任何地方使用它。
module MyLibrary
mattr_accessor :logger
end
然后,您可以使用config/initializers/
中的初始化程序或config/environment.rb
中的config.after_initialize
块来初始化您的记录器,如下所示:
require 'mylibrary'
MyLibrary.logger = Rails.logger
这仍然允许您从 Rails 之外的脚本中使用自包含库。这很好,偶尔。
如果在没有 Rails 的情况下使用库真的没有意义,那么你也可以直接使用 Rails.logger
。
在任何一种情况下,您都在处理标准的 Ruby Logger。还要记住,理论上,记录器可能是nil
。
【讨论】:
谢谢,这正是我想要的。 注意:此答案包含不正确的信息,编辑不希望我修复它们。除非(也许)您使用的是早于 2.0 的 Rails,否则您不是“处理标准的 Ruby Logger”。 Rails 现在使用ActiveSupport::BufferedLogger。如果您决定为(例如)包含在 Rails 项目中的 cron 作业实例化一个单独的记录器,以避免“污染”标准 Rails 日志。在这种情况下,请确保使用ActiveSupport::BufferedLogger.new
而不仅仅是 Logger.new
。我试过了,它没有用。【参考方案2】:
我们可以直接在lib中使用Rails logger,见下面sn-p。
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..."
【讨论】:
这对我有用,最后,在我意识到我需要以上是关于Rails:在 lib 目录中记录代码?的主要内容,如果未能解决你的问题,请参考以下文章