Y at-il un système d'enregistrement unifié pour Ruby?
-
10-10-2019 - |
Question
Je me demandais s'il y a des systèmes d'exploitation forestière véritablement unifiée qui il peut soutenir Rails et emplois retardés, et sont relativement faciles à mettre en place.
Je veux être en mesure de se connecter au même serveur / fichier pour tout contexte d'exécution dans mon application (Rails, emplois retardés, etc.), même si je ne suis pas actuellement dans un contexte Rails.
Love l'enregistreur Rails, mais je ne peux pas vous connecter à elle alors que dans un emploi Resque. Des idées?
La solution
Voulez-vous dire un fichier-enregistreur, similaire à syslog?
Ruby a la fois Logger
et Syslog
.
Logger peut faire rouler journal, poignées niveaux de gravité, et est utilisé dans un grand nombre de modules Ruby pour l'exploitation forestière. Vous pouvez définir le nom du fichier pour ouvrir une session, ou utiliser STDOUT / STDERR ou un flux IO.
Les documents pour syslog sont jolies barebones, mais vous pouvez obtenir des informations en naviguant sur son code source, ou lire la Ruby syslog README .
Autres conseils
Je dois connecter les choses qui se passent dans un petit bijou qui fonctionne par un travail resque. Pour vous connecter ce qui se passe à la base de données Rails, je fais ce qui suit:
#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
De cette façon, je peux connecter les choses qui se passent dans différents processus et aussi les journaux de filtre par object_id de l'instance Foo, alors que les données pertinentes se connecté.