我已阅读有关此guide和class的文档。 我希望创建一个记录器,每天记录信息,在让我们说一周之后,每次都自动删除最早的记录信息。
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 /下?
that是实现此目的的有效方式吗?
我通过将所有内容放入config / initializers并创建名为my_logger.rb的文件来实现。我仍然坚持删除/管理日志文件。
服务器是否通过日志轮换处理该部分(我知道有一些来自linux OS的logrotation)?或者Rails可以在内部处理它?</ p>
答案 0 :(得分:2)
MyLogger应该放在哪里?
可能把它放在/ lib下。然后,您可以从设置自定义记录器的初始化程序中请求它。
如何定期删除最早的日志记录信息?
有许多方法可以做到这一点,选择将基于你的约束。你没有多说过你的约束,所以很难给你正确答案。例如。你可以在每次添加新日志条目时清理旧日志,你可以运行一个cron作业,你可以安装一些非Rails软件进行日志轮换和其他日志维护,你可以使用Papertrail,如果你使用Heroku你可以查找https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes。
记住Rails的设计更多是为了处理请求并在该请求的上下文中响应它们,而不是在接收请求的上下文之外运行维护。您可以将维护作为每个format_message请求到MyLogger的副作用,检查最早的日志记录条目,如果找到一个早于一周的条目,则删除它们。你没有给出一个限制,为什么你不能在进程中这样做,如果你早期和便携的原型,那么这将使你快速。