如何在一定大小后删除rails日志文件

Tam*_*Tam 13 ruby-on-rails

我有一个不断运行的守护程序,可以很快填满日志文件(development.log或production.log).在特定大小之后删除日志文件或在某一天之前删除该部分的最佳方法是什么.

srb*_*ert 13

config.logger = Logger.new(config.log_path, 50, 1.megabyte)
Run Code Online (Sandbox Code Playgroud)

但要注意多个杂种可能会有这个问题.

  • 只是试着这个.我不得不改变语法.config.logger = Logger.new(config.paths ['log'].first,50,1048576)因为config.log_path和1.megabyte都给了我错误. (2认同)

Lar*_*eth 12

最好的方法是设置日志轮换,但是如何执行此操作非常依赖于平台,因此您应该添加有关您正在使用的内容的注释,包括开发和生产.

对于在Linux上运行的应用程序,我们为每个应用程序提供了一个文件/etc/logrotate.d/appname,它看起来像这样:

/path/to/rails_root_for_app/log/production.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 640 capistrano capistrano
}
Run Code Online (Sandbox Code Playgroud)

这将每天将日志移动到一个新文件中,为过去7天中的每一天保留一个压缩备份文件.

如果您只想在守护程序运行时清空文件而不保留其中的任何数据,只需从shell执行此操作:

> /path/to/rails_root_for_app/log/development.log
Run Code Online (Sandbox Code Playgroud)

这会将文件截断为0字节长度.


jam*_*esc 5

我更喜欢在 production.rb 文件中包含每月日志文件

config.logger = Logger.new(config.log_path, 'monthly')
Run Code Online (Sandbox Code Playgroud)