April 12, 2016
This blog is part of our Rails 5 series.
By default, Rails creates log directory in a file that is named after the
environment in which the application is running. So in production environment,
logs are by default directed to production.log file.
We will have to define custom loggers if these logs are to be directed to
another file or to standard output. Presence of such custom logic is what
enables Rails to direct logs to STDOUT along with development.log file in
development environment.
Rails 5, however,
supports logging to STDOUT in
production environment through introduction of new environment variable
RAILS_LOG_TO_STDOUT.
In a brand new Rails app, we can see the following snippet in production.rb
file.
if ENV["RAILS_LOG_TO_STDOUT"].present?
config.logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
end
By setting RAILS_LOG_TO_STDOUT to any value we should have the production logs
directed to STDOUT.
We can see in the snippet above config.logger is overwritten. Therefore now
the logs will not be directed to production.log file.
To opt out of this and revert to the original functionality, we can either
assign a blank value to this environment constant or remove
RAILS_LOG_TO_STDOUT from the list of environment constants.
If this blog was helpful, check out our full blog archive.