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

Ruby on rails Rails Capistrano部署最佳实践/日志文件,ruby-on-rails,capistrano,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的日志文件,然后创建一个新的

我继承了一个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的日志文件,然后创建一个新的日志文件

在某些情况下,第一次部署失败时会导致问题。当我再次部署时,它会第二次覆盖旧文件,现在以前存在的日志就消失了

问题是,我不明白部署脚本为什么要这样做。我不明白为什么一开始它是这样写的。我相信如果我们在部署过程中不使用日志文件,每个人都会没事的


有人能给我一些线索吗?

部署脚本做的很好,因为日志文件很快就会变大,写入大文件的成本很高。您应该使用log rotate或其他实用程序。但如果您想保持简单,可以通过附加时间戳来指定唯一的文件名

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"

删除它,然后使用log rotate。

可能只是为了保留每个日志文件,但为了避免庞大的日志文件,它会在每次部署时创建一个新的日志文件。最佳做法是使用unix log rotate或任何管理器实用程序。当然,我们使用的是logrotate,因此您同意这是多余和不必要的吗?我的直觉是将其从部署脚本中删除,当然我们正在使用log rotate。所以我认为从部署脚本中删除它是安全的。