【问题标题】:How can I create a log file that stays with an ActiveRecord object?如何创建与 ActiveRecord 对象保持一致的日志文件?
【发布时间】:2015-05-06 16:13:35
【问题描述】:

我有一个Upload AR 模型,可以由许多后台作业之一处理,具体取决于上传的file_type。为了跟踪每个Upload 发生的情况,它定义了一个名为logCarrierWave 字段。

我想记录上传文件的处理过程,并将其与upload 对象一起保存在数据库中。这些是大型 CSV 文件,当其中一条记录出现问题时,我不会失败整个文件。

我不知道如何从正在处理的任何后台作业中写入此log。如果我这样做:

  def logger
    logfile = File.open(self.log_file_name, 'w')  #create log file
    logfile.sync = true  #automatically flushes data to file
    Logger.new(logfile, 10, 500000)
  end

在模型上,然后每次都会实例化该日志文件。如果我这样做:

  def logger
    @@logger ||= {}
    @@logger[id] ||= Logger.new(File.open(self.log_file_name, 'w'), 10, 500000)  #create log file
  end

太丑了,如果我这样做我不知道如何设置logfile.sync = true

然后我必须有一个丑陋的方法来关闭文件并在保存之前将@@logger分配给upload.log字段。

我只是看了太久,无法消除丑陋,我相信有一种更清洁的方法。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 logging carrierwave


    【解决方案1】:

    您可以使用其中一种宝石来简化您的任务 https://github.com/shadabahmed/logstasher https://github.com/roidrage/lograge

    【讨论】:

      猜你喜欢
      • 2015-09-23
      • 2014-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      • 2015-04-05
      相关资源
      最近更新 更多