4

我想知道是否有任何真正统一的日志系统可以支持 Rails延迟作业,并且相对容易设置。

我希望能够为我的应用程序中的任何执行上下文(Rails、延迟作业等)登录到同一个服务器/文件,即使我当前不在 Rails 上下文中。

喜欢 Rails 记录器,但我在 Resque 工作时无法登录它。有任何想法吗?

4

2 回答 2

6

你的意思是一个文件记录器,类似于系统日志?

Ruby 拥有LoggerSyslog

Logger 可以进行日志滚动,处理严重级别,并在许多 Ruby 模块中用于日志记录。您可以定义要登录的文件的名称,或使用 STDOUT/STDERR 或 IO 流。

syslog 的文档非常简单,但您可以通过浏览其源代码或阅读Ruby Syslog README来获取信息。

于 2010-11-16T07:13:15.223 回答
2

我必须记录由 resque 作业运行的 gem 中发生的事情。要将正在发生的事情记录到 Rails 数据库中,我执行以下操作:

#in gem:
class Foo
  def self.logger
    @@logger ||= Logger.new(nil)
  end

  def self.logger=(logger)
    @@logger = logger
  end

  def self.logger_reset
    self.logger = Logger.new(nil)
  end

  def self.logger_write(obj_id, message, method = :info)
    self.logger.send(method, "|%s|%s|" % [obj_id, message])
  end
end

#in rails in initializers
Foo.logger = MyRailsLogger.new

#in in rails in lib or in model if it uses ActiveRecord
class MyRailsLogger
  def info
    ...
  end

  ...
end

这样我可以记录在不同进程中发生的事情,还可以通过 Foo 实例的 object_id 过滤日志,因此只记录相关数据。

于 2011-01-13T20:53:53.793 回答