Domanda

Mi chiedevo se ci sono dei sistemi di registrazione realmente unificata là fuori che può supportare Rails e di posti di lavoro in ritardo, e sono relativamente facili da configurare.

Voglio essere in grado di accedere allo stesso server / lima per qualsiasi contesto di esecuzione nella mia domanda (Rails, posti di lavoro in ritardo, ecc), anche se non sono attualmente in un contesto di Rails.

Amore Rails logger, ma non posso accedere ad esso, mentre in un lavoro Resque. Qualche idea?

È stato utile?

Soluzione

Vuoi dire un file-logger, simile a syslog?

Ruby ottenuto sia Logger e Syslog .

Logger può fare a rotazione di log, i livelli di manici di gravità, e viene usato in un sacco di moduli di Ruby per la registrazione. È possibile definire il nome del file per accedere a, o utilizzare output / error o un flusso di IO.

La documentazione per syslog sono piuttosto barebone, ma è possibile ottenere informazioni naviga il suo codice sorgente, o leggere il rubino syslog README .

Altri suggerimenti

Devo registrare le cose che stanno accadendo in una gemma che corre da un posto di lavoro Resque. Per accedere cosa sta succedendo nel database Rails faccio la seguente:

#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

In questo modo posso accedere cose che stanno accadendo nel processo diverso e anche i log di filtro per object_id dell'istanza Foo, in modo che solo i dati rilevanti viene registrato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top