Есть ли унифицированная система журнала для Ruby?

StackOverflow https://stackoverflow.com/questions/4191301

Вопрос

Мне было интересно, есть ли действительно единые системы ведения журнала, которые могут поддерживать рельсы а также отсроченные задания, и их относительно легко настроить.

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

Люблю регистратор рельсов, но я не могу войти в него, находясь на репортаже. Любые идеи?

Это было полезно?

Решение

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

Руби есть оба Logger а также Syslog.

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top