Rails logger
Rails.logger
Always use Rails.logger.{debug|info|warn|error|fatal}
rather than puts
. This allows your logs to fit into the standard log format, have a timestamp and have a level so you choose whether they are important enough to be shown in a specific environment. You can see the separate log files for your application under log/
directory with your rails app environment name. like: development.log
or production.log
or staging.log
You can easily rotating rails production logs with LogRotate.You just have to do small configuration as below
Open /etc/logrotate.conf
with your favourite linux editor vim
or nano
and add the below code in this file at bottom.
/YOUR/RAILSAPP/PATH/log/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
copytruncate
}
So, How It Works This is fantastically easy. Each bit of the configuration does the following:
- daily – Rotate the log files each day. You can also use weekly or monthly here instead.
- missingok – If the log file doesn’t exist,ignore it
- rotate 7 – Only keep 7 days of logs around
- compress – GZip the log file on rotation
- delaycompress – Rotate the file one day, then compress it the next day so we can be sure that it won’t interfere with the Rails server
- notifempty – Don’t rotate the file if the logs are empty
- copytruncate – Copy the log file and then empties it. This makes sure that the log file Rails is writing to always exists so you won’t get problems because the file does not actually change. If you don’t use this, you would need to restart your Rails application each time.
Running Logrotate Since we just wrote this configuration, you want to test it.
To run logrotate manually, just do: sudo /usr/sbin/logrotate -f /etc/logrotate.conf
That’s it.