0

我已阅读有关本指南课程的文档。我希望创建一个记录器,它每天记录记录信息,假设一周后,每次自动删除最旧的记录信息。

logfile = File.open(RAILS_ROOT + '/log/'+ (Date.today << 1).to_s + '_custom.log', 'a')  #create log file
logfile.sync = true  #automatically flushes data to file
CUSTOM_LOGGER = CustomLogger.new(logfile, 'daily')  #constant accessible anywhere

另外,我希望创建一个自定义日志记录,例如看起来像这样的东西(格式):

class MyLogger < Logger
  def format_message(severity, timestamp, progname, msg)
    "#{timestamp} : #{msg}\n"
  end
end

所以基本上,我想更好地了解将所有内容正确放置在哪个目录下。例如,MyLogger 应该在逻辑上放置在哪里......(任何地方?一个助手?或在 app/config/ 下?

这是实现这一点的有效方法吗?

我通过将所有内容放入 config/initializers 并创建一个名为 my_logger.rb 的文件来实现它。我仍然坚持删除/管理日志文件。

服务器是否通过日志轮换来处理该部分(我知道 linux 操作系统中的日志轮换有问题)?还是 Rails 可以在内部处理?

4

1 回答 1

2
  1. MyLogger 应该放在哪里?

    可能放在/lib下。然后,您可以从设置自定义记录器的初始化程序中要求它。

  2. 如何定期删除最旧的日志记录信息?

    有无数种方法可以做到这一点,并且选择将基于您的限制。你没有过多地谈论你的限制,所以很难给你一个恰到好处的答案。例如,您可以在每次添加新日志条目时清理旧日志,可以运行 cron 作业,可以安装一些非 Rails 软件来进行日志轮换和其他日志维护,可以使用 Papertrail,如果您使用 Heroku,您可以可以查找https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes

    请记住,Rails 的设计目的更多是为了处理请求并在该请求的上下文中响应它们,而不是在接收请求的上下文之外运行维护。您可以将维护作为对 MyLogger 的每个 format_message 请求的副作用,检查最旧的日志记录条目,如果发现一个超过一周的条目,则将其删除。你没有给出一个限制,为什么你不能在过程中做这个,如果你在早期和可移植的东西上做原型,那么这会让你走得更快。

于 2012-08-29T21:10:48.987 回答