Notes on Rotating Logs for Rails Apps
The default behaviour for a Rails application is to keep writing to the same log file until the entire disk of a server is filled. This is often undesirable on a production server. So here is how to rotate the log file on a Linux server.
The steps
Create a configuration file for the logrotate utility in /etc/lograte.d/ directory with the applications name.
vim /etc/lograte.d/cogar
Here is a recommended configuration:
/var/www/cogar/log/production.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
size 10M
create 640 cogar_user cogar_user
}
Configuration explanation
I’ll explain what this does.
- Line 1 is the location of the log file.
- “daily” means rotate Daily, you can also say “weekly” or “hourly”
- “missingok” means don’t freak out if the log is missing
- rotate 7 means keep only the most recent 7 rotations.
- compress means gzip the rotated files
- delaycompress means DO NOT gzip the most recent, ie production.log.1
- notifempty means do not rotate an empty log file
- size 10M means do not rotate until the log reaches at least 10M in size, it will still run and check daily
- the create line defines the owner of the rotated files and the umask