how to delete rails log file after certain size

安稳与你 提交于 2019-12-18 11:35:53

问题


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.


回答1:


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.

For our apps running on Linux, we have a file /etc/logrotate.d/appname for each app, that looks something like this:

/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.

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:

> /path/to/rails_root_for_app/log/development.log

This will truncate the file to 0 bytes length.




回答2:


config.logger = Logger.new(config.log_path, 50, 1.megabyte)

but beware that multiple mongrels can have issues with this.




回答3:


I prefer a monthly log file in my production.rb file

config.logger = Logger.new(config.log_path, 'monthly')



回答4:


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 = Logger.new(log_pipe)

(From this blog post)




回答5:


Or you can delegate logging to syslog



来源:https://stackoverflow.com/questions/1036821/how-to-delete-rails-log-file-after-certain-size

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!