BigBinary Blog

We write about Ruby on Rails, React.js, React Native, remote work, open source, engineering and design.

Rails 5 Sending STDOUT via environment variable

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.

Mohit Natoo in Rails 5
12, 2016
Share

You might also like

Rails 5 Active Record attributes API

Rails 5 Create module and class level variables

Rails 5 silences assets logs in dev mode by default

Rails 5 disables autoloading while app in production

Rails 5 adds more control to fine tuning SSL usage

Subscribe to our newsletter