Frage

ich mich gefragt, ob es irgendwelche wirklich einheitliche Erfassungssysteme gibt, die Rails unterstützen und verzögert Arbeitsplätze und sind relativ einfach einzurichten.

Ich mag für jeden Ausführungskontext in meiner Anwendung auf die gleiche Server / Datei protokollieren können (Rails, verzögert Jobs, etc), auch wenn ich in einem Rails-Kontext nicht zur Zeit bin.

Love the Rails-Logger, aber ich kann nicht daran anmelden, während in einem Resque Job. Irgendwelche Ideen?

War es hilfreich?

Lösung

Wollen Sie eine Datei-Logger, ähnlich wie syslog?

got Rubys beide Logger und Syslog .

Logger kann Protokollroll tun, Griffe Schweregrade und wird in einer Menge von Ruby Module zur Protokollierung. Sie können den Namen der Datei definieren, um zu protokollieren, oder STDOUT / STDERR oder einen IO-Stream.

Die Dokumentation für syslog sind ziemlich Barebones, aber Sie können Informationen erhalten, indem Sie den Quellcode einfügen oder Ruby-Syslog README .

Andere Tipps

Ich habe Dinge zu protokollieren, die in einem Edelstein geschehen, die von einem resque Auftrag ausgeführt wird. Um sich einzuloggen, was auf Rails Datenbank wird ich wie folgt vor:

#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

Auf diese Weise kann ich Dinge einzuloggen, die in verschiedenen Verfahren geschehen und auch Filter-Protokolle durch object_id der Foo-Instanz, so dass nur relevante Daten protokolliert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top