我有一个我继承的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文件,现在之前存在的日志已经消失。
问题是,我不明白为什么部署脚本会这样做。我不明白为什么它首先是这样写的。我相信如果我们在部署期间单独留下日志文件,每个人都会没事的。
有人对我有任何线索吗?
答案 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"