diff --git a/lib/capistrano/ops/logs/paths.rb b/lib/capistrano/ops/logs/paths.rb index cdc6bf0..aa59de0 100644 --- a/lib/capistrano/ops/logs/paths.rb +++ b/lib/capistrano/ops/logs/paths.rb @@ -10,6 +10,14 @@ def rails_log_file_path shared_path.join fetch(:rails_log_file_name) || "log/#{fetch(:rails_env)}.log" end + def nginx_log_file_path + shared_path.join fetch(:nginx_log_file_name) || 'log/nginx-access.log' + end + + def nginx_error_log_file_path + shared_path.join fetch(:nginx_error_log_file_name) || 'log/nginx-error.log' + end + def sidekiq_log_file_path shared_path.join fetch(:sidekiq_log_file_name) || 'log/sidekiq.log' end diff --git a/lib/capistrano/ops/logs/tasks/nginx.rake b/lib/capistrano/ops/logs/tasks/nginx.rake new file mode 100644 index 0000000..c79140d --- /dev/null +++ b/lib/capistrano/ops/logs/tasks/nginx.rake @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +namespace :logs do + include Capistrano::Ops::Logs::Paths + include Capistrano::Ops::Logs::Helpers + + desc 'Tail Nginx access logs' + task 'nginx:info' do + on roles(fetch(:rake_roles, :app)) do + trap_interrupt + + execute "tail -f #{nginx_log_file_path}" do |_channel, stream, data| + puts data + break if stream == :err + end + end + end + + desc 'Tail Nginx error logs' + task 'nginx:errors' do + on roles(fetch(:rake_roles, :app)) do + trap_interrupt + + execute "tail -f #{nginx_error_log_file_path}" do |_channel, stream, data| + puts data + break if stream == :err + end + end + end + + desc 'Tail all Nginx logs' + task :nginx do + on roles(fetch(:rake_roles, :app)) do + trap_interrupt + + execute "tail -f #{nginx_log_file_path} & tail -f #{nginx_error_log_file_path}" do |_channel, stream, data| + puts data + break if stream == :err + end + end + end +end