Существует ли единая система ведения журналов для Ruby?

Мне было интересно, существуют ли действительно унифицированные системы ведения журналов, которые могут поддерживать Rails и отложенные задания и относительно просты в настройке.

Я хочу иметь возможность регистрироваться на том же сервере/файле для любого контекста выполнения в моем приложении (Rails, отложенные задания и т. д.), даже если я сейчас не в контексте Rails.

Мне нравится регистратор Rails, но я не могу войти в него во время работы Resque. Любые идеи?


person Jacob Relkin    schedule 16.11.2010    source источник


Ответы (2)


Вы имеете в виду файл-логгер, похожий на syslog?

В Ruby есть как Logger, так и Syslog.

Logger может выполнять прокрутку журналов, обрабатывает уровни серьезности и используется во многих модулях Ruby для ведения журналов. Вы можете определить имя файла для входа или использовать STDOUT/STDERR или поток ввода-вывода.

Документация по syslog довольно проста, но вы можете получить информацию, просмотрев исходный код или прочитав README системного журнала Ruby.

person the Tin Man    schedule 16.11.2010

Я должен регистрировать то, что происходит в драгоценном камне, который запускается заданием resque. Чтобы записать, что происходит в базу данных 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

Таким образом, я могу регистрировать то, что происходит в другом процессе, а также фильтровать журналы по object_id экземпляра Foo, поэтому регистрируются только соответствующие данные.

person dimus    schedule 13.01.2011