Rails Capistrano部署最佳实践/日志文件

时间:2014-02-19 17:19:07

标签: ruby-on-rails capistrano

我有一个我继承的rails应用程序。在deploy.rb中,它执行以下命令:

run "mv #{shared_path}/log/#{rails_env}.log #{shared_path}/log/#{rails_env}_old"
run "touch #{shared_path}/log/#{rails_env}.log && chmod -R 777 #{shared_path}/log"

所以你可以看到它正在将现有的日志文件移动到一个名为_old的文件,然后创建一个新文件。

在某些情况下,第一次部署失败时会出现问题。当我再次部署时,它会再次覆盖_old文件,现在之前存在的日志已经消失。

问题是,我不明白为什么部署脚本会这样做。我不明白为什么它首先是这样写的。我相信如果我们在部署期间单独留下日志文件,每个人都会没事的。

有人对我有任何线索吗?

2 个答案:

答案 0 :(得分:1)

删除它,然后使用日志旋转。

答案 1 :(得分:0)

部署脚本的功能很好,因为日志文件很快变大,写入大文件的成本很高。您应该使用日志旋转或其他一些实用程序。但是如果你想保持简单,可以通过附加时间戳来提供唯一的文件名

run "mv #{shared_path}/log/#{rails_env}.log #{shared_path}/log/#{rails_env}_old_#{Time.now.Time.now.to_i}"
run "touch #{shared_path}/log/#{rails_env}.log && chmod -R 777 #{shared_path}/log"
相关问题