how to delete rails log file after certain size

how to delete rails log file after certain size

I have a daemon that runs constantly which fills up the log file(development.log or production.log) pretty quickly. What is the best way to delete the log file after certain size or delete the portion before certain day.

AssociationTypeMismatch Error on Ruby on Rails app


How to use REST to separate model, view and control into two parts
The best way is to set up log rotation, but how you do this is very platform dependent, so you should add a comment about what you're using, both for development and production..
Can JRuby use original Ruby gems?
For our apps running on Linux, we have a file /etc/logrotate.d/appname for each app, that looks something like this:.
How not to repeat this code in my models
/path/to/rails_root_for_app/log/production.log {     daily     missingok     rotate 7     compress     delaycompress     notifempty     create 640 capistrano capistrano } 
This will move the log into a new file once a day, keeping a compressed backup file for each of the last 7 days..
Keeping the history of model associations
If you just want to empty the file without keeping any of the data in it while the daemon is running, simply do this from a shell:.
ROR Associations group by query
> /path/to/rails_root_for_app/log/development.log 
This will truncate the file to 0 bytes length..
Is there native support in Rails or Ruby for representing threaded comments

Stop redirecting to sessions/new?


config.logger =, 50, 1.megabyte) 
but beware that multiple mongrels can have issues with this..


I prefer a monthly log file in my production.rb file.
config.logger =, 'monthly') 


Or even better, if all your environments are on either Mac or Linux, and have /usr/sbin/rotatelogs, just use that.

It's much more flexible, and doesn't have the data loss issue that logrotate has (even if you use copytruncate).

. Add this inside config/application.rb (or just config/environments/production.rb if you only want rotation in prod):.
log_pipe = IO.popen("/usr/sbin/rotatelogs #{Rails.root}/log/#{Rails.env}.%Y%m%d.log 86400", 'a') config.logger = 
(From this blog post).


Or you can delegate logging to syslog.

97 out of 100 based on 67 user ratings 967 reviews