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.