I have a rails 6.0.3 application that is working perfectly fine and deployed on both heroku (as staging) and on a normal digital ocean VM for production (used capistrano deploy for the same).
But the logs for some reason are not working only on the VM (please note that this used to work before). On dev and heroku, they work just fine
When I go to the shared logs, this is what I see:
~/app_name/current/log$ ll
total 28
-rw-rw-r-- 1 deploy deploy 0 Dec 1 15:36 "'production'.log"
-rw-rw-r-- 1 deploy deploy 17204 Dec 1 15:36 "'production'.log.1"
drwxrwxr-x 2 deploy deploy 4096 Jan 6 17:34 ./
drwxrwxr-x 9 deploy deploy 4096 Nov 28 07:04 ../
-rw-rw-r-- 1 deploy deploy 0 Jan 6 17:33 production.log
For some reason the earlier logs used to be in a file called "'production'.log"
, so I manually created production.log
as an attempted solution to no avail. Note that:
The "'production'.log.1"
was logrotated with the last lines as:
Started GET "/users/sign_in" for 49.207.209.194 at 2020-12-01 02:35:28 +0000
Processing by Users::SessionsController#new as HTML
Rendering users/sessions/new.html.slim within layouts/application
Rendered users/sessions/new.html.slim within layouts/application (Duration: 0.6ms | Allocations: 75)
Rendered shared/_header.html.slim (Duration: 0.2ms | Allocations: 41)
Completed 200 OK in 6ms (Views: 3.5ms | Allocations: 1120)
Started GET "/users/sign_in" for 49.207.209.194 at 2020-12-01 02:35:29 +0000
Processing by Users::SessionsController#new as HTML
Rendering users/sessions/new.html.slim within layouts/application
Rendered users/sessions/new.html.slim within layouts/application (Duration: 0.4ms | Allocations: 75)
Rendered shared/_header.html.slim (Duration: 0.2ms | Allocations: 41)
Completed 200 OK in 4ms (Views: 2.3ms | Allocations: 1120)
So it was working until then
From rails console i tried:
$ bundle exec rails c
Loading production environment (Rails 6.0.3.4)
irb(main):001:0> Rails.logger
=> #<ActiveSupport::Logger:0x000055d6cbd84cb0 @level=0, @progname=nil, @default_formatter=#<Logger::Formatter:0x000055d6cbd84dc8 @datetime_format=nil>, @formatter=#<Logger::Formatter:0x000055d6cbd84c60 @datetime_format=nil>, @logdev=#<Logger::LogDevice:0x000055d6cbd84d78 @shift_period_suffix=nil, @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDOUT>>, @binmode=false, @mon_data=#<Monitor:0x000055d6cbd84d28>, @mon_data_owner_object_id=15740>>
irb(main):002:0> Rails.logger.instance_variable_get("@logdev")
=> #<Logger::LogDevice:0x000055d6cbd84d78 @shift_period_suffix=nil, @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDOUT>>, @binmode=false, @mon_data=#<Monitor:0x000055d6cbd84d28>, @mon_data_owner_object_id=15740>
irb(main):003:0> Rails.logger.instance_variable_get("@logdev").dev
=> #<IO:<STDOUT>>
On /home/deploy/app_name/.rbenv-vars
I have the following set:
RAILS_LOG_TO_STDOUT=true
RAILS_SERVE_STATIC_FILES=true
RACK_ENV=production
RAILS_ENV=production
in my production.rb
file, inside the application configuration I have the following lines related to logging:
config.log_level = :debug
config.log_tags = [ :request_id ]
config.log_formatter = ::Logger::Formatter.new
if ENV["RAILS_LOG_TO_STDOUT"].present?
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)
end
This has remained virtually unchanged since my first commit, and the logging used to work before
Later I had added the lograge
gem (after I realized that logs were not being output)
Had added the following inside a new file in config/initializers
require 'lograge/sql/extension'
Rails.application.configure do
config.lograge.enabled = true
config.lograge.custom_options = lambda do |event|
exceptions = %w[controller action]
{
params: event.payload[:params].except(*exceptions)
}
end
end
Couldnt figure out what was causing empty log files
Update:
I even tried deleting the application directory and redeployed using capistrano. It creates a new log file, but writes nothing on it, same as before:
~/app_name/current/log$ ll
total 8
drwxrwxr-x 2 deploy deploy 4096 Jan 7 19:24 ./
drwxrwxr-x 9 deploy deploy 4096 Jan 7 19:07 ../
-rw-rw-r-- 1 deploy deploy 0 Jan 7 19:24 production.log