ruby-on-rails - Capistrano 的尾部生产日志 - 如何阻止它

标签 ruby-on-rails ruby-on-rails-3 capistrano

我在几个站点上发现了这个漂亮的代码片段,允许我通过 Capistrano 分析生产日志:

desc "tail production log files" 
task :tail_logs, :roles => :app do
  run "tail -f #{shared_path}/log/production.log" do |channel, stream, data|
    puts  # for an extra line break before the host name
    puts "#{channel[:host]}: #{data}" 
    break if stream == :err    
  end
end

它工作得很好,但是,当我读完日志时,我按了 Ctrl+C,它在我的控制台上产生了一个令人讨厌的错误。并不是说这是一个大问题,但我觉得它很烦人。我该怎么做才能不产生错误,但任务/尾部/日志查看只是安静地结束?

另外,我对如何分析日志不太熟悉 - 这真的是快速查看(远程生产)日志中最新事件的最佳方式,还是有更好的方法?我知道有无数的日志分析工具,但我想要一个非常简单的解决方案来查看最后几个请求,而不是庞大而复杂的东西。不过,我不确定这个 Capistrano 解决方案是否真的是最佳选择。比如,大多数人使用的解决方案是什么?

最佳答案

试试 trap("INT") { puts 'Interupted'; exit 0; }像这样:

desc "tail production log files" 
task :tail_logs, :roles => :app do
  trap("INT") { puts 'Interupted'; exit 0; }
  run "tail -f #{shared_path}/log/production.log" do |channel, stream, data|
    puts  # for an extra line break before the host name
    puts "#{channel[:host]}: #{data}" 
    break if stream == :err
  end
end

我希望这有帮助。

关于ruby-on-rails - Capistrano 的尾部生产日志 - 如何阻止它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218902/

相关文章:

ruby-on-rails - 如何使用 capistrano deploy 定位特定的提交 SHA

Capistrano:上限部署与上限部署:更新

javascript - rails 5 : allow javascript posted image from controller

ruby-on-rails - 为什么 Rails 3 的 AutoTest 在 "loading autotest/rails_rspec2"处卡住

ruby-on-rails-3 - 无法在生产模式下访问 config.handlebars

ruby-on-rails - Rails 3 远程表单 : How do I specify the content type?

mysql - 使用生产数据库值填充开发数据库

ruby-on-rails - 如何计算一个文件夹中 csv 文件的空范围?

ruby-on-rails - Rails - 设计安装(成功/现场工作,但文件不存在)

ruby-on-rails-3 - 在Ruby on Rails上指定字符串字段的长度